少なくとも1つのチェックボックスをオンにしたいのですが、私はv-model
と:checked
のコンセプトを混ぜています。Vueでは、条件に基づいてチェックボックスをキャンセルする方法はありますか?
docは言う:
v-model
任意のフォーム要素で見つかった最初のvalue
、checked
またはselected
属性 を無視します。 Vueインスタンスデータ を常に真実のソースとして扱います。私は私のモデルを変更することが防ぐことができますが、私はチェックする]チェックボックスを防ぐことはできません
...
いくつかのコード:
テンプレート
<div class="wrapper" v-for="(s, id) in userOutputSeries" :key="id">
<input type="checkbox" :id="id" :value="id" @change="preventIfLessThanOneChecked" :checked="s.active">
<label :for="id">{{ s.display }}</label>
</div>
モデルuserOutputSeries
data() {
return {
userOutputSeries: {
foo: {
display: 'Awesome Foo',
active: true
},
bar: {
display: 'My Bar',
active: false
}
}
}
}
ネイティブチェックボックスの伝播を停止するpreventIfLessThanOneChecked
ハンドラ
preventIfLessThanOneChecked (event) {
// I don't update the model so it stay at the same state
// But only need to count the active series and do what we want.
console.log(event.target.value, event.target.checked)
}
任意のアイデア?
私はイベントの代わりにデータを考えるのをやめていました...ありがとう! –