Мне нужно добавить дополнительные строки, заставляющие Vue пересчитывать вычисляемую опору, а именно:
var foo = this.groups;
this.groups = {};
this.groups = foo;
как видно в этой скрипте: https://jsfiddle.net/8bqv29dg/. Без них available_groups
не обновляется.
Почему это так и как правильно обновить available_groups
с помощью groups
?
Пробовали добавить groups
к «глубокому просмотру», но это не помогло.
Используйте $set
, чтобы добавить новое свойство для объекта данных:
methods: {
add_group: function(key, name) {
this.$set(this.groups, key, {key, name});
},
}
Здесь описал реактивность vue
Vue не отслеживает новые элементы, добавленные к объекту:
https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Предостережения
Одним из решений является использование Vue.set
или переназначение объекта, как в примере ниже:
new Vue({
el: "#app",
data: {
groups: {1: {key: 1, label: 'Those guys'}},
},
computed: {
available_groups: function() {
return [{value: 0, label: 'Anyone'}].concat(Object.values(this.groups));
},
},
methods: {
add_group: function(key, name) {
Vue.set(this.groups, key, {key: key, name: name})
},
}
})