javascript - 使用过滤器渲染 html

标签 javascript html vue.js vuejs2 vue-filter

我需要编写一个呈现 html 标签的过滤器。 这是我的过滤器:

filters: {
  limitStrLength: function (value, maxLength) {
    if (value && value.length > maxLength) {
      let partialVal = value.substr(0, maxLength) + "...";
      return "<span title='" + value + "' >" + partialVal + "</span>";
    } else {
      return value;
    }
  }
}

我的问题是我无法渲染原始 html。

如果我只是这样做:

<div>{{ productName  | limitStrLength(6) }}</div>

html 标签呈现为字符串(即,我在屏幕上看到类似 <span title=... 的内容)。

我还尝试使用 v-html属性:

<div v-html="productName | limitStrLength(6)"></div>

但是我收到一个错误:

Property or method "limitStrLength" is not defined on the instance but referenced during render.

有什么想法吗?

最佳答案

试试这个:

<div v-html="$options.filters.limitStrLength(productName, 6)"></div>

来源:Github issue

关于javascript - 使用过滤器渲染 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60811478/

相关文章:

javascript - 什么相当于 sinonjs 中的 jasmine.createSpy().and.callFake(fn)

javascript - 云函数中的 cors 错误

javascript - 在 javascript 中创建一个用于评论的模型窗口

vue.js - 如何从 JS 控制台访问 Vue 组件中的变量?

javascript - Vue 3 从字符串动态加载组件

javascript - 当特定的 div 击中它时,或者当它距离顶部 100px 时,如何让我的固定标题滚动

javascript - HTML5 使用 createMediaElementSource() 缓冲和播放音频

javascript - jQuery .load() 另一个包含 prism.js 的页面

html - 搜索栏中的按钮 CSS 样式在桌面上可以正常工作,但在 iPhone 上却不行

javascript - Quasar 2.2.2、Vue 3 和 Firebase : how to access GlobalProperties from router