解决方案1: 使用其他数据的更新带动数组的更新
解决方案2: 强制更新视图 his.$forceUpdate();
解决方案3: 调用数组的set函数更新数据, 由于视图更新的逻辑是在set函数中实现的,通过索引修改数组不会触发set函数, 所以我们手动调用set函数即可 this.$set(this.array, 1, “b”)
<body><script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script><div id='myApp'><h1>{{count}}-{{array}}-{{obj.name}}</h1><button @click="change">更新</button></div><script>new Vue({el: '#myApp',data: {count: 0,array: [1,2,3,4],obj: {name:"zhangsan", age: 20}},methods: {change(){// this.count++ ;// this.obj.name = "lisi" ;// this.array.push(5);this.array[1] = "b";// 特殊情况:// 1, 使用数组的索引修改数组中的数据, 且数组的长度不发生变化时, 视图不会更新this.count = this.count;this.obj.name = "zhangsan"// 2, 值类型数据如果更新前后值相同, 视图不更新// 解决方案1: 使用其他数据的更新带动数组的更新// this.obj = {name:"zhangsan", age: 20}// 解决方案2: 强制更新视图// this.$forceUpdate();// 解决方案3: 调用数组的set函数更新数据, 由于视图更新的逻辑是在set函数中实现的,通过索引修改数组不会触发set函数, 所以我们手动调用set函数即可this.$set(this.array, 1, "b")// 相比之下, 方案三比方案二执行效率更高}}})</script></body>
