html5 setdata函数,Vue中data、methods、computed等使用注意点

1.data

1.1 当将Vue 实例外声明的属性赋值给data 中的属性,两者变量名相同时,data 中的属性可以简写,如:

var items = [1, 2, 3]; 赋值data 中的items 时可以这样写:

data(){

return{

items, //此处的简写为es6 中的语法

msg:"外界如何获取data 中的数据"

}

}

1.2 Vue 实例外获取data 属性时有两种方法,

方法一: var msg = vm(Vue 实例名).$data.msg;

方法二: var msg = vm.msg;

而Vue 实例内获取data 内的变量时写法为this.msg,并且data 中的变量不能相互引用。

2.methods

2.1 函数没有缓存,每次调用都会重新执行一次,只支持单项绑定,当输入框v-model 绑定函数时,不可修改输入框中的值。

2.2 函数传入当前对象的两种情况,

情况一: 当只要传入元素本身时,

say hi

methods:{

say:function(event){

console.log(e.currentTarget);

}

}

或者

say hi

methods:{

say:function(event){

console.log(e.currentTarget);

}

}

这取决于函数后面是否带()括号。

情况二: 当需要传入参数或传入参数和元素本身时

say hi

methods:{

say:function(message,e){

alert(message);

console.log(e.currentTarget);

}

}

3.computed

3.1 computed 有缓存,只有绑定的变量发生变化时才会调用。

3.2 使用computed 进行双向绑定时get 函数和set 函数用法:

sum:{

get:function(){ 绑定数据变化时调用

console.log("计算属性执行");

return (this.englishScore-0) + (this.mathScore-0);

},

set:function(newValue){ 计算属性变化时调用

let equalVal = newValue / 2;

this.englishScore = equalVal;

this.mathScore = equalVal;

}

}

当get 函数中监听的变量englishScore 或mathScore 变化时get 函数调用。因为缓存的原因,get 函数第一次调用时console.log("计算属性执行") 会执行,之后get 函数再执行时console.log("计算属性执行") 将不会再执行。

当sum 的值发生改变时set 函数执行,set 函数中传入的参数为sum 改变后的值,可以再set 函数中对相关属性进行操作。

4.watch

4.1 当watch 中监听对象为对象数组时,正常只会监听数组中对象数量的改变。如果再数组中某个对象的属性发生改变时需要使用deep 深度监听:

lists:{

handler: function(newValue, oldValue){ //回调函数

//数组变化时,将数据保存到本地

itemStorage.save(newValue);

} ,

deep:true

}

lists 为被监听的对象数组,handler 为监听对象改变时执行的操作,此时deep:true 执行深度监听。

回调函数 handler: function(newValue, oldValue) 中第一个参数为监听对象的变化后值,第二个参数为变化前的值。

5.directive

5.1 全局指令

全局指令可以在多个Vue 管理的路口下使用,定义指令名时不能加” v- “,而在元素上调用指令时需要加” v- “。

Vue.directive("指令名", {

bind:function(el, binding){

el.style.color = binding.value.输入的对象属性名;

}

inserted:function(el, binding){

//将传入的内容转为大写

el.innerHTML = binding.value.toUpperCase();

}

})

一般对样式style 的操作在bind 中,bind 函数只初始化一次。

一般对互动js 的操作在inserted 中,inserted 也是只调用一次。

注意: 在v-指令名=” “中传入数据,要使用自定义指令传入的数据需要从binding.value 中获取。

此外传入自定义指令中的数值需要明确对象类型,如:传入string 类型v-指令名=”‘string 内容'” 等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值