小弟最近在学vuejs,之后照着官方模板自己写了个todo-list的小程序。在写自定义过滤器的时候遇到一些问题。
官方教程说可以用全局方法 Vue.filter() 注册一个自定义过滤器。于是我将过滤器注册在了main.js当中。过滤器的作用是筛选完成的或者没有完成的todos。
Vue.filter('filterFinish',function (value,type) {
if(type == 'All'){
return value;
}else if(type == 'Finished'){
if(value.length==0){
return [];
}else{
var a = [];
for(var i =0;i<value.length;i++){
if(value[i].isFinished==true){
a.push(value[i]);
}
}
return a;
}
}else{
if(value.length==0){
return [];
}else{
var a = [];
for(var i =0;i<value.length;i++){
if(value[i].isFinished==false){
a.push(value[i]);
}
}
return a;
}
}
})
然后我在app.vue中使用这个过滤器
<li v-for='item in (items | filterFinish "All")' :class="{'finished':item.isFinished}" @click='toggleFinish(item)'>
<span>{{ item.label }}</span>
<button @click='removeTodo($index)' class="removeButton">X</button>
</li>
这时候就报错了。
自定义filter在组件中该怎么用呢?
migration
在v-for上用过滤器的新旧写法都在上面