Tôi đang cố gắng hiểu làm thế nào để theo dõi đúng một số biến thể prop. Tôi có một thành phần cha mẹ (tệp .vue) nhận dữ liệu từ lệnh gọi ajax, đặt dữ liệu vào trong một đối tượng và sử dụng nó để hiển thị một số thành phần con thông qua lệnh v-for, bên dưới đơn giản hóa việc triển khai của tôi:
<template>
<div>
<player v-for="(item, key, index) in players"
:item="item"
:index="index"
:key="key"">
</player>
</div>
</template>
... sau đó bên trong <script>
thẻ:
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]);
}
});
}
các đối tượng mục là như thế này:
item:{
prop: value,
someOtherProp: {
nestedProp: nestedValue,
myArray: [{type: "a", num: 1},{type: "b" num: 6} ...]
},
}
Bây giờ, bên trong thành phần "người chơi" của con tôi đang cố gắng xem bất kỳ biến thể thuộc tính nào của Vật phẩm và tôi sử dụng:
...
watch:{
'item.someOtherProp'(newVal){
//to work with changes in "myArray"
},
'item.prop'(newVal){
//to work with changes in prop
}
}
Nó hoạt động nhưng có vẻ hơi khó đối với tôi và tôi đã tự hỏi liệu đây có phải là cách làm đúng đắn hay không. Mục tiêu của tôi là thực hiện một số hành động mỗi khi prop
thay đổi hoặc myArray
có các yếu tố mới hoặc một số biến thể bên trong những hành động hiện có. Bất kỳ đề nghị sẽ được đánh giá cao.
keys
bên trong của một đối tượng? Ví dụ:"item.*": function(val){...}
"item.someOtherProp": function (newVal, oldVal){
như @Ron đề xuất.