为了账号安全,请及时绑定邮箱和手机立即绑定

VUE监听数组新旧值不变化,请教前辈原因?

VUE监听数组新旧值不变化,请教前辈原因?

人到中年有点甜 2019-05-21 11:00:51
最近在自学vue对于watch监测这块还有点疑问,请教前辈帮忙解答。具体问题如下:测试监测不同类型data数据的新旧值,在有数组的情况下,watch监测到了数组的变化但是没监测到变化前的旧值。在官网也查了文档,问题应该是出在下面这里,无奈对于官网文档给出的解决方法看不懂,求各位大神给与指点!!!g:{handler:function(val,oldVal){console.log("newG:"+val,'oldG:'+oldVal);}}当你利用索引直接设置一个项时,例如:vm.items[indexOfItem]=newValue当你修改数组的长度时,例如:vm.items.length=newLengthwatch实例1A:B:Cname:Dname:arry:newVue({el:'#app',data:{a:'',b:'',c:{name:''},d:{e:{f:{nage:''}}},g:[]},watch:{//普通watch监听a:function(val,oldVal){console.log("newA:"+val,'oldA:'+oldVal);},//通过方法名在methods内监听b:'anothermethod',//对象深度监听c:{handler:function(val,oldVal){console.log('newname:'+val,'oldname:'+oldVal);},deep:true,immediate:true},'c.name':{handler:function(val,oldVal){console.log('newC:'+val,'oldC:'+oldVal);}},'d.e.f.age':{handler:function(val,oldVal){console.log('newD:'+val,'oldD:'+oldVal);}},g:{handler:function(val,oldVal){console.log("newG:"+val,'oldG:'+oldVal);}}},methods:{anothermethod:function(val,oldVal){console.log("newB:"+val,'oldB:'+oldVal);}}})
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

知道怎么用但是说不出来o(╯□╰)o
数组本身有值:oldArr=[1,2,3],渲染到html上显示1,2,3;
现在需求来了,要改一下数组的值,变成newArr=[1,3,5],并让html渲染成1,3,5;
怎么办?
1.替换数组;
2.变异方法;
你都不想用,就要通过index改变数组的值,让html显示1,3,5.然后就出现了你看到的那个问题。
通过改index什么的,怎么解决?
1.Vue.set(vm.items,indexOfItem,newValue);
2.vm.items.splice(indexOfItem,1,newValue);
大概就是这么个意思
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 1236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号