由于 JavaScript 的限制,Vue.js 不能检测到下面数组变化:javascript
直接用索引设置元素,如 vm.items[0] = {};html
修改数据的长度,如 vm.items.length = 0。vue
为了解决问题 (1),Vue.js 扩展了观察数组,为它添加了一个 $set() 方法:java
this.$set(this.number, 0 , "A");
说明:数组
针对html中表单双向绑定修改后的值,数组修改能够同步页面呈现;echarts
针对js代码中直接修改数组对象,页面呈现不一样步。框架
示例:post
//提交处理 var list = _this.postlist; var isHasItem = false; for (var i = 0; i < list.length; i++) { var item = list[i]; if (item.company == data.company) { isHasItem = true; //修改处理--这种方式不会触发视图更新,针对于非双向绑定的model值,例如startDate,endDate 的文本框没有设置双向绑定 // item.company = data.company; // item.post = data.post; // item.startDate = data.startDate; // item.endDate = data.endDate; _this.$set(_this.postlist,i,data); console.info(item); } } if (isHasItem == false) { list.push(data); }
更多:this