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

vue是如何监听修改数组length和直接vm.items[indexOfItem] =

vue是如何监听修改数组length和直接vm.items[indexOfItem] =

慕村9548890 2019-02-26 09:11:00
看文档文档说:由于 JavaScript 的限制,Vue 不能检测以下变动的数组:当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue当你修改数组的长度时,例如:vm.items.length = newLength而我尝试修改时却可以成功触发视图更新,不需要this.$set():data () {    return {      arr: [11, 22 ,33]    }  },  methods: {    updateMessage: function () {      this.arr[0] = 0      this.arr.length = 1    }  }我之前了解vue是循环数组八大方法并加以修改实现监听,现在是如何监听到对length和直接赋值操作的呢?
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

vue 后面版本是打算做到 vm.items[indexOfItem] = newValue 也响应式更新页面的,不过也是要等到 3.0 版本之后,会通过 Proxy 这么个东西来搞

然而现版本确实是不会更新页面的,至少我用的 2.5.3 版本不行,线上 demo

如果题主确定可以更新页面,请提供一个线上小 demo 复现一下


查看完整回答
反对 回复 2019-03-01
?
慕婉清6462132

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

那真相只有一个, 我猜你是在 created 内调用 updateMessage 的 ? 这样子是能成功. 因为组件还没挂载进去呀.


查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 1504 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信