本文操作环境:windows10系统、vue2.9,dell g3电脑。
vue.set()
vue.set( target, key, value )
参数:
target:要更改的数据源(可以是对象或者数组)
key:要更改的具体数据
value :重新赋的值
官方api:vue.set()
vue.set的使用
<!doctype html><html><head> <meta charset="utf-8"> <title></title></head><body><div id="app2"> <p v-for="item in items" :key="item.id"> {{item.message}} </p> <button @click="btn2click()">动态赋值</button><br/> <button @click="btn3click()">为data新增属性</button></div><script src="../../dist/vue.min.js"></script><script>var vm2=new vue({ el:"#app2", data:{ items:[ {message:"test one",id:"1"}, {message:"test two",id:"2"}, {message:"test three",id:"3"} ] }, methods:{ btn2click:function(){ vue.set(this.items,0,{message:"change test",id:'10'}) }, btn3click:function(){ var itemlen=this.items.length; vue.set(this.items,itemlen,{message:"test add attr",id:itemlen}); } }});</script></body></html>
此时页面是这样
我点击第一个按钮后运行methods中的btn2clcick方法,此时我要将test one更改为change test
运行后的结果:此时列表中第一列的test one已经变成了change test
这里得警惕一种情况:
当写惯了js之后,有可能我会想改数组中某个下标的中的数据我直接this.items[xx]就改了,如:
btn2click:function(){ this.items[0]={message:"change test",id:'10'}}
我们来看看结果:
这种情况,是vue文档中明确指出的注意事项,由于 javascript 的限制,vue 不能检测出数据的改变,所以当我们需要动态改变数据的时候,vue.set()完全可以满足我们的需求。
仔细看的同学会问了,这不是还有一个按钮吗,有什么用?
我们还是直接看:
这是初始的列表数据,数据里面有三个对象
点击之后:
这里可以看出,vue.set()不光能修改数据,还能添加数据,弥补了vue数组变异方法的不足
tip:vue.set()在methods中也可以写成this.$set()
推荐:《vue教程》
以上就是vue中vue.set有几个参数的详细内容。
