Vue向上13コンポーネントにv-modelを使用
1812 ワード
v-model
は双方向バインディングを実現することができる:
実際には文法糖であり、
コンポーネントにも使用できます.コンポーネントに使用する場合は、次のようになります.
正常に動作するために、このコンポーネント内の
input
は、1
value
のプロパティをvalue
というpropにバインド2
input
イベントがトリガーされたとき、カスタムinput
イベントを介して新しい値が投げ出されるVue.component('comp', {
props: ['value'],
template: `
`
})
これにより,コンポーネント内外のデータの双方向バインドが実現される.
このコンポーネントの
v-model
のデフォルトでは、value
というpropとinput
というイベントが利用されますが、ラジオボックス、チェックボックスなどの入力コントロールにはvalue
は必要なく、checked
が必要で、oninput
イベントは必要なく、onchange
イベントが必要です.model
オプションでは、次のような競合を回避できます.Vue.component('base-checkbox', {
model: {
prop: 'checked',
event: 'change'
},
props: {
checked: Boolean
},
template: `
`
})
このコンポーネントで
v-model
を使用している場合:
ここでの
lovingVue
の値は、checked
というpropに渡されます.同時に、
がchange
イベントをトリガーし、新しい値が付随すると、このlovingVue
のプロパティが更新されます.コンポーネントの
props
オプションでchecked
というpropを宣言する必要があることに注意してください.リファレンス