Vue计算属性及侦听属性和过滤器
计算属性computed
计算属性是用于复杂逻辑的计算,模板中若放入过多的逻辑会让模板过重且难以维护。
例子
1 | <div id="example"> |
1 | var vm = new Vue({ |
如上述代码,模板1
{{ reversedMessage }}
处会执行computed中的reversedMessage函数,进行复杂了逻辑的运算。
侦听属性watch
例子
1 | <div id="demo">{{ fullName }}</div> |
1 | var vm = new Vue({ |
firstName和lastName是watch属性的两个函数,当和data中和它同名的元素的值发生改变时,就会触发对应的函数。一般用于侦听data的数据是否发生变化,故称为侦听属性。
除此之外,还有另一种写法:1
2
3firstName.$watch('firstNmae',function (val) {
this.fullName = val + ' ' + this.lastName
})
当firstName的值发生改变时,同样会执行函数。
过滤器
Vue过滤器的作用就是将原本的数据加工成想要的形式返回。
模板
1 | {{msg | 过滤器名称}} |
Vue自带过滤器
1.capitalize: 首字母变为大写
2.uppercase:所有英文字母变为大写
3.lowercase:所有英文字母变为小写
4.currency :将数据变为货币形式,可传参,如1
{{msg | currency '$' '3'}}
这里的意思是将msg以美元货币的形式传出,并且保留到小数点后三位。
5.pluralize : 如果只有一个参数,复数形式只是简单地在末尾添加一个 “s”。如果有多个参数,参数被当作一个字符串数组,对应一个、两个、三个…复数词。如果值的个数多于参数的个数,多出的使用最后一个参数。
6.debouce : 用作等待处理,一般用于函数延迟处理,如@click="disappear | debounce 1000">当点击时,disappear函数延迟1000毫秒执行,若不带时间参数,debounce的默认延迟时间为300毫秒。
7.limitBy :需用于数组,一般用于截取的数组,可传入两个参数,第一个参数为取得的数量(即截取几个),第二个参数为偏移量(即从第几个开始)
8.filterBy :需用于数组,可以过滤掉无关键字的,如v:for="item in arr | filterBy 'l' in 'name' ">此处会输出arr数组中的含有‘l’字符的‘name’的值。filterBy的第一个参数为关键字,第二个参数为属性名,中间用in连接。
9.orderBy : 用于数组排序,可带一个参数,值为1或-1,当为1时,数组升序输出,为-1时,数组降序输出。
自定义过滤器
除了Vue中自带的过滤器,我们也可以自定义过滤器(否则Vue也太辣鸡了吧)。形式如下:1
2
3
4Vue.filter(过滤器的名字,function(参数){
//函数体
return 值(过滤出来最后的值)
})
双向过滤器
当然也可以定义一个读写形式的双向过滤器,形式如下:1
2
3
4
5
6
7
8Vue.filter(过滤器名称,{
read:function(){
},//只读
write:function(){
}//只写
})