vue.js的computed,filter,get,set的用法及区别详解
- 格式:pdf
- 大小:95.93 KB
- 文档页数:3
vue.js的computed,filter,get,set的⽤法及区别详解
1、vue.js的computed⽅法:
处理复杂逻辑,基于依赖缓存,当依赖发⽣改变时会重新取值。
⽤methods也可以实现同样的效果,但methods在重新渲染的时候会重新调⽤执⾏,在性能上computed优于methods,当不需要缓存时可⽤methods。
实例1:computed和methods实现翻转字符串
<template>
<div>
<input v-model="message">
<p>原始字符串: {{ message }}</p>
<p>计算后反转字符串: {{ reversedMessage }}</p>
<p>使⽤⽅法后反转字符串: {{ reversedMessage2() }}</p>
</div>
</template>
<script>
export default {
data () {
return {
message: 'Runoob123!'
}
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
},
methods: {
reversedMessage2: function () {
return this.message.split('').reverse().join('')
}
}
}
</script>
执⾏结果:
实例2:computed的get()和set()⽤法
<template>
<div>
<select v-model="site">
<option value="Google ">Google </option>
<option value="baidu http://www.baidu.co">baidu </option>
<option value="⽹易 ">⽹易 </option>
</select>
<p>name:{{name}}</p>
<p>url:{{url}}</p>
</div>
</template>
<script>
export default {
data () {
return {
name: 'Google',
url: ''
}
},
computed: {
site: {
// getter
get: function () {
return + ' ' + this.url
},
// setter
set: function (newValue) {
let names = newValue.split(' ')
= names[0]
this.url = names[names.length - 1]
}
}
}
}
</script>
执⾏结果:
2、vue.js的过滤器fliter⽅法:
过滤器是将返回数据进⾏处理后返回处理结果的简单函数。
可是在vue2.0版本被去掉了,替代⽅法是将函数写在methods⾥。
实例:
<template>
<div>
<input v-model="filterText"/>
<ul>
<li v-for="item in obj">
<span>{{myfilter(bel)}}</span>
</li>
</ul>
</div>
</template>
<script>
export default {
data () {
return {
obj: [
{value: 0, label: 'beijing'},
{value: 1, label: 'shanghai'},
{value: 2, label: 'guangdong'},
{value: 3, label: 'zhejiang'},
{value: 4, label: 'jiangshu'}
],
filterText: ''
}
},
methods: {
myfilter (value) {
if (value.indexOf(this.filterText) > -1) {
return value
}
}
}
}
</script>
执⾏结果:
3、vue.js的get和set⽅法:
vue中data属性能够响应数据变化内部是将data 的属性转换为 getter/setter,在vue2.0中,get()和set()⽤于computed计算属性中,在上⾯的computed实例中已有涉及。
另外从vue1.0中继承的vm.$set( object, key, value )⽤于动态监控数据元素,在实例创建后添加数组属性并且有响应可⽤该⽅法实现。
<template>
<div>
<input v-model="opt" @blur="add()"/>
<ul>
<li v-for="item in arr">
{{ item }}
</li>
</ul>
</div>
</template>
<script>
export default {
data () {
return {
arr: [ '北京', '上海', '⼴东', '深圳' ],
opt: ''
}
},
methods: {
add () {
this.$set(this.arr, this.arr.length, this.opt)
}
}
}
</script>
执⾏结果:
以上这篇vue.js的computed,filter,get,set的⽤法及区别详解就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。