javascript - Vue js 文本高亮过滤器

标签 javascript text formatting vue.js

我需要使用 vuejs 编写文本高亮过滤器的帮助。这个想法是遍历给定的单词数组,如果有匹配项,则将带有类的 span 应用于该单词。我遇到的问题是,我似乎无法使用 vuejs 以 html 格式返回数据。任何想法都将受到高度赞赏。我真的被这个困住了。

Vue.filter('highlight', function(words, query){
    //loop through **words** and if there is a match in **query**
   //apply a <span> with some style
   //At the end return formatted string to html page
})

最佳答案

HTML 插值 {{{ foo }}} 已被移除以支持 vuejs2.X 中的 v-html 指令,因此从版本 2.x 开始,Vue.js 允许原始 JavaScript 模板(React 风格) 除了 HTML 模板。
@jeff 的答案是正确的,但对于 vuejs 1.x 版本,但如果 {{{}}} 对你们不起作用,或者如果您想评估 HTML 中的标签,并且来自受信任的来源,例如,如果你想添加一个<strong></strong>标记,那么你需要使用 v-html,v-html 要求 Vue 将字符串评估为 HTML:

<span v-html="$options.filters.highlight(item, val)">{{ item }}</span>

高亮过滤器:

Vue.filter('highlight', function(word, query){
  var check = new RegExp(query, "ig");
  return word.toString().replace(check, function(matchedText,a,b){
      return ('<strong>' + matchedText + '</strong>');
  });
});

或者你可以使用@Thomas Ferro 的过滤器

关于javascript - Vue js 文本高亮过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37839608/

相关文章:

javascript - CSS - 在单击之前向上滑动一个不可见的 div

html - 如何为 html 或 css 中的文本创建自定义下划线或突出显示?

javascript - 文本正在替换图像而不是显示在图像上

javascript - 如何在javascript中添加多个值?

string - 如何将 Int 转换为给定长度的字符串,前导零对齐?

javascript - 将 Canvas 放在 CSS 文本框的顶部

javascript - React Native - 如何在多个按钮上应用 Prop

javascript - 输入类型文本 html5 仅接受 12 个逗号分隔值

java - 在 Android 应用程序中显示文本

javascript - Highcharts y轴千位分隔符