ここでの問題は簡単ですが、私のオブジェクトのプロパティの値を変更する親コンポーネントのメソッドを実行していますproducts
(親のdata
にも属しています)良い。期待どおりに動作しない時計
しかし、私は、子コンポーネントに小道具としてこのオブジェクトを渡すと深く<それを見ている - あなたはalert('changed');
が実行されることはありません見ることができるように、これは、失敗している:
Vue.component('child', {
\t props: ['prods'],
watch: {
\t prods: {
\t handler: function(new_val, old_val) {
\t alert('watched');
},
deep: true
}
}
})
new Vue({
el: '#app',
template: '<div>{{products[0].value}}<br><button v-on:click="incre">increment prod 0</button></div>',
data: {
\t products: [
\t {id: 1, name: 'prod1', value: 20},
{id: 2, name: 'prod2', value: 40},
],
},
methods: {
incre: function() {
this.products[0].value += 20;
}
}
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<div id="app">
<child v-bind:prods="products"></child>
</div>
https://jsfiddle.net/dmbgmxzh/6/
(アップデート):
この作品:これはないhttps://jsfiddle.net/dmbgmxzh/5/
:https://jsfiddle.net/dmbgmxzh/6/
これは奇妙です...
残念ながら、期待どおりに動作します。そして、 'deep:true'は配列には不要です。 – WaldemarIce