前端之家收集整理的这篇文章主要介绍了
基于Vue实例对象的数据选项,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
前面的话
一般地,当模板内容较简单时,使用data选项配合表达式即可。涉及到复杂逻辑时,则需要用到methods、computed、watch等方法。本文将详细介绍Vue实例对象的数据选项
data
data是Vue实例的数据对象。Vue将会递归将data的属性转换为getter/setter,从而让data属性能响应数据变化
[注意]不应该对属性使用箭头函数
var values = {message: 'Hello Vue!'}
var vm = new Vue({
el: '#app',data: values
})
console.log(vm);
Vue实例创建之后,可以通过访问原始数据对象
console.log(vm.$data);
Vue实例也代理了data对象上所有的属性
var values = {message: 'Hello Vue!'}
var vm = new Vue({
el: '#app',data: values
})
console.log(vm.$data === values);//true
console.log(vm.message);//'Hello Vue!'
console.log(vm.$data.message);//'Hello Vue!'
被代理的属性是响应的,也就是说值的任何改变都是触发视图的重新渲染。设置属性也会影响到原始数据,反之亦然
但是,以
或
开头的属性不会被Vue实例代理,因为它们可能和Vue内置的属性或方法冲突。可以使用例如
的方式访问这些属性
var values = {
message: 'Hello Vue!',_name: '小火柴'
}
var vm = new Vue({
el: '#app',data: values
})
console.log(vm._name);//undefined
console.log(vm.$data._name);//'小火柴'
computed
计算属性函数computed将被混入到Vue实例中。所有getter和setter的this上下文自动地绑定为Vue实例
[注意]不应该使用箭头函数来定义计算属性函数
下面是关于computed的一个例子
原始字符串: "{{ message }}"
反向字符串: "{{ reversedMessage }}"
var vm = new Vue({
el: '#example',data: {
message: '小火柴'
},computed: {
reversedMessage: function () {
return this.message.split('').reverse().join('')
}
}
})
var vm = new Vue({
data: { a: 1 },computed: {
// 仅读取,值只须为
函数
aDouble: function () {
return this.a * 2
},// 读取和设置
aPlus: {
get: function () {
return this.a + 1
},set: function (v) {
this.a = v - 1
}
}
}
})
console.log(vm.aPlus);//2
vm.aPlus = 3
console.log(vm.a);//2
console.log(vm.aDouble);//4