Saya mencoba memahami cara menonton dengan benar untuk beberapa variasi penyangga. Saya memiliki komponen induk (file .vue) yang menerima data dari panggilan ajax, memasukkan data ke dalam objek dan menggunakannya untuk membuat beberapa komponen anak melalui v-for directive, di bawah penyederhanaan implementasi saya:
<template>
<div>
<player v-for="(item, key, index) in players"
:item="item"
:index="index"
:key="key"">
</player>
</div>
</template>
... lalu di dalam <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]);
}
});
}
objek barang seperti ini:
item:{
prop: value,
someOtherProp: {
nestedProp: nestedValue,
myArray: [{type: "a", num: 1},{type: "b" num: 6} ...]
},
}
Sekarang, di dalam komponen "pemain" anak saya, saya mencoba mengawasi variasi properti Item apa pun dan saya menggunakan:
...
watch:{
'item.someOtherProp'(newVal){
//to work with changes in "myArray"
},
'item.prop'(newVal){
//to work with changes in prop
}
}
Ini bekerja tetapi tampaknya agak rumit bagi saya dan saya bertanya-tanya apakah ini cara yang tepat untuk melakukannya. Tujuan saya adalah melakukan beberapa tindakan setiap kali prop
berubah atau myArray
mendapatkan elemen baru atau variasi di dalamnya. Setiap saran akan dihargai.
keys
bagian dalam objek? Contoh:"item.*": function(val){...}
"item.someOtherProp": function (newVal, oldVal){
seperti yang disarankan @Ron.