由于JavaScript的限制,Vue无法检测到以下已更改的数组:
当数组的一个项直接由索引设置时,例如:vm.items[indexOfItem]=newValue
当您修改数组的长度时,例如vm.items.length=newLength,数组将不会被更新。
当然,vue中给出的解决方案是使用Vue修改数组。集,虚拟机。$ set(Vue的变体书写。set)或拼接、caoncat等。这也将触发状态更新:
例如:
因此,如果在创建实例后向实例添加新属性,则不会触发更新。
Ps:现在有两个数组,分别是arr1和arr2。如果arr1用下面的目标赋值改变数组,arr2用$set改变数组,结果是什么?
data:{ arr1=['a ',' b ',' c '];arr2=['foo ',' bar ',' baz '];} VM . arr 1[1]=“alpha”;虚拟机。$set(vm.arr2,1,' alpha ');按照我们开头说的,根据下标索引改变数组不能触发状态更新。我们会知道,第一个数组的第二次更改不会在页面上更新,而只会在页面上更新数组的第二次更改。然而,结果是:
arr1=['a ',' alpha ',' b ',' c '];arr2=['foo ',' alpha ',' bar ',' baz '];两个数组的值都被更新,也就是说,当arr2用$set()方法更新时,页面将被再次更新。
以上vue.js中$set和array的更新方式是边肖分享的全部内容。希望能给大家一个参考,支持我们。