小道具のバリエーションを適切に監視する方法を理解しようとしています。ajax呼び出しからデータを受け取る親コンポーネント(.vueファイル)があり、データをオブジェクト内に配置し、それを使用してv-forディレクティブを介していくつかの子コンポーネントをレンダリングします(実装の簡略化の下)。
<template>
<div>
<player v-for="(item, key, index) in players"
:item="item"
:index="index"
:key="key"">
</player>
</div>
</template>
...そして<script>
タグの内側:
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} ...]
},
}
今、私の子の「プレーヤー」コンポーネント内で、アイテムのプロパティの変化を監視しようとしています。
...
watch:{
'item.someOtherProp'(newVal){
//to work with changes in "myArray"
},
'item.prop'(newVal){
//to work with changes in prop
}
}
それは機能しますが、それは私には少しトリッキーなようであり、これがそれを行う正しい方法であるかどうか疑問に思っていました。私の目標は、prop
変更するたびにアクションを実行するかmyArray
、新しい要素や既存の要素のバリエーションを取得することです。任意の提案をいただければ幸いです。
keys
オブジェクト内のすべての変化を監視することは可能ですか?例:"item.*": function(val){...}
"item.someOtherProp": function (newVal, oldVal){
@Ronの提案どおりに使用し てください。