有只小跳蛙
vue是没有监听下标赋值的操作也无法监听下面这种是无法监听的var arr = ["a","b"];arr[1] = "bbbb";vue只监听了'push','pop','shift','unshift','splice','sort','reverse'等直接改变原数组的方法而$set,内部还是splice方法function set(target, key, val) { if (Array.isArray(target) && typeof key === 'number') { target.length = Math.max(target.length, key); target.splice(key, 1, val); return val } //其他操作 ... }但是如果你的结构下面:var arr = ["a",{text:"b"}];arr[1].text = "bbbbb";因为对数据进行了递归 对象的赋值是可以直接监听到的但是下面又不行了var arr = ["a",{text:"b"}];arr[1] = {text:"bbbbb"};总结来说不要数组下标直接赋值var arr = ["a",{text:"b"}];this.arr[1] = {text:"bbbbb"};//除了这种以下都可以this.arr[1].text = "bbbbb";//利用对象的监听this.arr = ["a",{text:"bbbbb"}];//同上this.arr.splice(1, 1, {text:"bbbbb"});//数组的监听this.$set(this.arr,1,{text:"bbbbb"});//同上