Ich versuche zu verstehen, wie man richtig auf Requisitenvariationen achtet. Ich habe eine übergeordnete Komponente (.vue-Dateien), die Daten von einem Ajax-Aufruf empfängt, die Daten in ein Objekt einfügt und damit eine untergeordnete Komponente über eine v-for-Direktive rendert, unter einer Vereinfachung meiner Implementierung:
<template>
<div>
<player v-for="(item, key, index) in players"
:item="item"
:index="index"
:key="key"">
</player>
</div>
</template>
... dann im <script>
Tag:
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]);
}
});
}
Objektobjekte sind wie folgt:
item:{
prop: value,
someOtherProp: {
nestedProp: nestedValue,
myArray: [{type: "a", num: 1},{type: "b" num: 6} ...]
},
}
Jetzt versuche ich in meiner untergeordneten "Player" -Komponente, nach den Eigenschaftsvarianten eines Elements zu suchen, und verwende Folgendes:
...
watch:{
'item.someOtherProp'(newVal){
//to work with changes in "myArray"
},
'item.prop'(newVal){
//to work with changes in prop
}
}
Es funktioniert, aber es scheint mir ein bisschen schwierig zu sein und ich habe mich gefragt, ob dies der richtige Weg ist. Mein Ziel ist es, jedes Mal eine Aktion auszuführen, wenn prop
sich myArray
neue Elemente oder Variationen innerhalb bestehender ändern oder erhalten. Jeder Vorschlag wird geschätzt.
keys
innerhalb eines Objekts auf eine Veränderung zu achten? Beispiel:"item.*": function(val){...}
"item.someOtherProp": function (newVal, oldVal){
Sie einfach wie von @Ron vorgeschlagen.