不知道为什么官网给这个功能起名叫filter(过滤器)
,angular2里叫做pipe(管道)
。管道这个概念,在Linux的shell里就有,非常形象生动,可能因为Vue是仿照angular1设计的,但是叫“过滤器”根本不明所以。
注:说实话管道比较少用,处理数据我们一般在绑定数据的位置用computed
计算属性完成,不知道这个特性以后会不会移除。
Vue2中没有自带的管道,但是自定义管道并不困难。
<body>
<div id="app">
{{s | trim | capitalize}}
</div>
<script>
Vue.filter('trim', function (value)
{
return value.trim();
});
Vue.filter('capitalize', function (value)
{
return value.charAt(0).toUpperCase() + value.slice(1);
});
let app = new Vue({
el: "#app",
data: {
s: " hello",
},
methods: {}
});
</script>
</body>
上面代码中,定义了两个管道,trim
和capitalize
,分别实现字符串头尾去空格,和首字母大写。和angular一样,多个管道可以串联使用,非常简单。
<body>
<div id="app">
{{i | currency("¥")}}
</div>
<script>
Vue.filter('currency', function (value, symbol)
{
return value + symbol;
});
let app = new Vue({
el: "#app",
data: {
i: 100
},
methods: {}
});
</script>
</body>
上面代码实现了一个加上货币符号的功能,注意定义管道时的写法,函数中第一个参数是管道要操作的数据,第二个是后面带的参数。