在js中直接采用this.obj.attr = 'xxx'的方式修改对象的属性值,发现视图层没更新重新渲染出最新的数据,此时可以采用this.$set进行操作
语法:this.$set(target, propertyName/index, value)
1、为对象添加属性或修改指定属性
var obj = {
name: '张三'
};
this.$set(obj, 'name', '李四');//修改name属性值
this.$set(obj, 'age', 18);//追加age属性并赋值
console.log(obj); //{name: '李四', 'age': 18}
2、修改数组值
var arr = [1, 2, 3];
this.$set(arr, 0, 4);
console.log(arr);//[4, 2, 3]
如果想要对整个数组重新赋值,可以采用以下方法:
var arr1 = [1, 2 , 3];
var arr2 = [4, 5, 6];
arr1.splice(0, 3, ...arr2);
console.log(arr1);//[4, 5, 6]
// 添加多个属性,应该用两个对象
this.obj = Object.assign({}, this.obj, {age: 20, gender: 'male'})
// 或
this.user = Object.assign( {}, this.user, {
age: 20,
gender: 'male'
})
vue向数组中的每一个对象都添加一个元素
var newTableData=[{ a: '1'},{ b: '2'}, {c: '3'}, {d: '4' }]
this.newTableData.map((item, index) => {
this.tableData.push(
Object.assign(
{},
item,
{ isExpend: false }
)
)
})