私はvue.js 2.5.2を使用しています
オブジェクトの配列があり、forms [*]。selectedを監視し、それが変更された場合は関数を呼び出します。
これは私の試みですが、明らかに正しくありません。配列をforループに入れて、選択した各オブジェクトのプロパティを監視してみました。
watch: {
for (var i = 0; i < forms.length; i++) {
forms[i].selected: function(){
console.log("change made to selection");
}
}
},
これは、forms []と呼ばれるオブジェクトの配列です。
forms: [
{
day: '12',
month: '9',
year: '2035',
colors: 'lightblue',//default colour in case none is chosen
selected: true
},
{
day: '28',
month: '01',
year: '2017',
colors: 'lightgreen',//default colour in case none is chosen
selected: true
}
],
どんな助けでも大歓迎です、
ありがとう
deep watcher を使用することもできますが、より洗練されたソリューションは、監視するデータの計算されたプロパティを作成し、代わりにそれを監視することです。
new Vue({
el: '#app',
data: () => ({
forms: [{
day: '12',
month: '9',
year: '2035',
colors: 'lightblue',
selected: true
},
{
day: '28',
month: '01',
year: '2017',
colors: 'lightgreen',
selected: true
}
],
}),
computed: {
selected() {
return this.forms.map(form => form.selected)
}
},
watch: {
selected(newValue) {
console.log("change made to selection")
}
}
})
<html>
<head>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<ul>
<li v-for="(form, i) in forms" :key="i">
<input type="checkbox" v-model="form.selected"> {{form.colors}}
</li>
</ul>
</div>
</body>
</html>