У меня есть этот объект массивов, который я пытаюсь наблюдать за каждым обновлением.
myData = {
"299":[527],
"376":[630,629]
}
Я прочитал эту документацию о наблюдении за объектом, который указывал использовать либо this.$set(object, propertyName, value)
или Object.assign({}, this.object, dataToBeAppended)
чтобы посмотреть объект. Я использовал this.$set
.
export default {
...
data() {
return {
myData: {},
};
},
watch: {
myData(newVal) {
console.log(`?localStorage`);
},
},
methods: {
onFoldChange(propertyName) {
const newArr = [...]
this.$set(this.myData, propertyName, newArr);
},
}
}
В отличие от того, что я ожидал, vue фиксирует изменения только для свойства. Изменения стоимости существующего свойства не отслеживаются. Например, если свойство "299"
было недавно добавлено, оно напечатает ?localStorage
. Когда значение свойства "299"
обновляется с [527]
до чего-то другого, ничего не запускается. Когда я печатаю myData
, я вижу, что каждое значение обновляется правильно. Просто часы не фиксируют изменения.
В документации также описывается, что мы можем наблюдать массив, используя this.$set(this.myData, indexOfItem, newValue)
, поэтому я также попробовал версию массива приведенного выше кода, как этот.
this.$set(this.myData[propertyName], index, newValueToAdd);
На этот раз он вообще не слушает. Даже не первая запись.
Есть ли лучший способ решить эту проблему? Как другие наблюдают за объектом? Сложность исходит от типа значений (массив)?