У меня есть похожая проблема с этим:
VueJs 2.0 - как прослушивать изменения `props` , но в моем случае я отправляю объект от родителя к потомку, также с передачей несколько раз, чтобы использовать преимущества ссылок на объекты в JS.
Есть пример, но работает нормально:
<div id="app">
<child :myprop="myObj"></child>
<button @click="text = 'Another text'">Change text</button>
</div>
<script>
new Vue({
el: '#app',
data: {
myObj: {
id: null
}
},
components: {
'child' : {
template: `<div>
<p>{{ myprop.id }}</p>
<select v-model="myprop.id">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</div>`,
props: ['myprop'],
watch: {
'myprop.id': function(newVal, oldVal) { // watch it
console.log('Prop changed: ', newVal, ' | was: ', oldVal)
}
}
}
}
});
</script>
https://jsfiddle.net/8hqwg6Ln/
В моем случае я устанавливаю v-model для select на "parentObj.id", а затем добавляю наблюдателя для этого. Цель состоит в том, чтобы изменить другое свойство parentObj после изменения идентификатора - пользователь выбирает идентификатор, после чего я ищу этот идентификатор в моем массиве и устанавливаю parentObj.price, который является v-моделью, для другого компонента (модифицированного ввода) на том же уровне, что и поле выбора ,
Когда я меняю привязку, наблюдатель не срабатывает. Если я добавлю @change с помощью своего пользовательского метода, он будет работать, но с задержкой (я вижу это в инструментах vue dev, нужно обновить, чтобы получить текущие данные), также он не работает для второго компонента ввода - он не видит изменяет parentObj.price.
Каков наилучший подход для использования сложной коллекции с передачей и изменения этой коллекции с помощью множества различных компонентов?
Я думаю, что я могу добавить «копии» свойств на локальный уровень (то есть создать данные с идентификатором и ценой для потомка), добавить наблюдателей и использовать этот набор. $ Для обновления полученных реквизитов. Но ... это хороший вариант, может быть, здесь что-то лучше?