Я пытаюсь понять, как правильно следить за некоторыми вариантами поддержки. У меня есть родительский компонент (файлы .vue), которые принимают данные из вызова ajax, помещают данные внутри объекта и используют его для рендеринга некоторого дочернего компонента через директиву v-for, ниже упрощения моей реализации:Vue.js - Как правильно следить за вложенными свойствами
<template>
<div>
<player v-for="(item, key, index) in players"
:item="item"
:index="index"
:key="key"">
</player>
</div>
</template>
... затем в "сценарий" тег:
data(){
return {
players: {}
},
created(){
let self = this;
this.$http.get('../serv/config/player.php').then((response) => {
let pls = response.body;
for (let p in pls) {
self.$set(self.players, p, pls[p]);
}
});
}
вещь объекты, как это:
item:{
prop: value,
someOtherProp: {
nestedProp: nestedValue,
myArray: [{type: "a", num: 1},{type: "b" num: 6} ...]
},
}
Теперь внутри моего ребенка "игрок" compone нт я пытаюсь наблюдать за изменением какого-либо предмета собственности, и я использую:
...
watch:{
'item.someOtherProp'(newVal){
//to work with changes in "myArray"
},
'item.prop'(newVal){
//to work with changes in prop
}
}
Это работает, но это, кажется, немного сложнее для меня, и мне было интересно, если это правильный способ сделать это. Моя цель состоит в том, чтобы выполнить какое-то действие каждый раз, когда «подпирать» изменение или туАггау получает новые элементы или некоторые вариации внутри существующих Любое предложения будет appriciated
Просто используйте ' "item.someOtherProp": функция (newVal, oldVal) {', как предложено @Ron. – Reiner
@ Reiner это именно то, чего он пытался избежать в вопросе; это то же самое, что и синтаксис ES5. На самом деле нет никаких дополнительных накладных расходов при просмотре вычисленного и полезной техники в различных ситуациях. –