Отслеживание изменений в объектах
Предостережения об изменениях объектов
Опять же, из-за ограничений JavaScript, Vue не может обнаружить добавление или удаление свойств. Например:
var vm = new Vue({
data: {
a: 1
}
})
// свойство `vm.a` реактивно
vm.b = 2
// свойство `vm.b` НЕ реактивноVue не позволяет динамически добавлять новые реактивные свойства на корневом уровне уже созданного экземпляра. Тем не менее, можно добавить реактивные свойства к вложенному объекту с помощью метода Vue.set(object, propertyName, value). Например, для следующего:
var vm = new Vue({
data: {
userProfile: {
name: 'Anika'
}
}
})Можно добавить новое свойство age для вложенного объекта userProfile:
Vue.set(vm.userProfile, 'age', 27)Также можно использовать метод экземпляра vm.$set, который является псевдонимом для глобального Vue.set:
vm.$set(vm.userProfile, 'age', 27)Иногда может потребоваться добавить ряд новых свойств существующему объекту, например, используя Object.assign() или _.extend(). В таких случаях, нужно создать новый объект со свойствами обоих объектов. Поэтому вместо:
Object.assign(vm.userProfile, {
age: 27,
favoriteColor: 'Vue Green'
})Следует добавлять новые реактивные свойства таким образом:
vm.userProfile = Object.assign({}, vm.userProfile, {
age: 27,
favoriteColor: 'Vue Green'
})Last updated
Was this helpful?