如何从过滤器中输出html
How to output html from filter inside mustache
我有一个输入(右上角),用户可以搜索东西,当它的指令长度得到3个字符时,它将显示产品列表并突出显示匹配…
看我的代码:
html<div id="app">
<div id="header">
<div class="right"><input type="text" v-model="message" v-on:keyup="searchStart()" v-on:blur="searchLeave()"/>
<ul v-if="this.searchInput" class="product-list">
<li v-for="product in products">
{{ product.id }} - {{ product.name | highlight }} - {{ product.qtd }}</li></ul>
</div>
</div>
<div id="main">
<div id="menu">fdfds</div>
<div id="container">{{ message }}</div>
</div>
</div>
js
var search = new Vue({
el: "#app",
data: {
message: "",
searchInput: false,
products: [
{
id: 1,
name: "produto 01",
qtd: 20
},
{
id: 2,
name: "produto 02",
qtd: 40
},
{
id: 3,
name: "produto 03",
qtd: 30
},
]
},
methods: {
searchStart: function(){
if(this.message.length >= 3)
this.searchInput = true;
console.log(this.searchInput);
},
searchLeave: function(){
this.searchInput = false;
this.message = "";
console.log(this.searchInput);
}
},
filters: {
highlight: function(value){
return value.replace(search.message, '<span class=''highlight''>' + search.message + '</span>');
}
}
});
这里你可以看到一支活笔:http://codepen.io/caiokawasaki/pen/dXaPyj
尝试在笔内键入prod
…
我的过滤器正确吗?我创建过滤器的方式是正确的吗?
主要问题是:如何从我的过滤器输出HTML ?
<编辑/解决方案/h2>
在这种情况下的问题是codepen
,与vue
有某种冲突,所以我无法使用{{{}}}
逃避html,将代码放在另一个编辑器(jsfidle)中,它工作了。
我接受奖励给出的答案,因为它是正确的。
你需要三个步骤来实现你想要的:
- 使用三括号{{{}}}显示未转义的html
- 通过v-model变量过滤用户,以便只显示匹配
- 用
<span>
标签替换匹配的子字符串
查看计算属性filteredUsers
和此工作jsfiddle中的过滤器
相关文章:
- 使用Jade输出HTML(在ng个重复内)
- 输出 html 表单数据
- 如何通过 AngularJS 模板输出 html
- Ajax 输出 html 注释
- 显示查询输出 HTML 中的图像
- HTML 代码不适用于 jquery 调用,而是输出 HTML 代码
- Html.ActionLink onclick JavaScript 函数未被调用,并且函数名称在输出 HTML 中已损
- Javascript -使用字符串输出HTML
- 如何正确使用jQuery从php输出html字符串
- 为什么.html()不输出html标签
- 如何获得一个变量's输出html值
- Twitter-text.js输出html作为纯文本
- 多行文本文件输出html
- 如何使用XSLT匹配元素和输出HTML
- 输出HTML代码
- 输出HTML时出现意外的令牌错误
- 用JavaScript输出HTML实体
- 在rjerb模板中输出HTML
- 从angularjs过滤器输出HTML,无需ng绑定HTML
- 获取实际输出HTML的函数