@@ -543,13 +543,18 @@ new Vue({
543
543
は、以下の糖衣構文です:
544
544
545
545
``` html
546
- <input v-bind:value =" something" v-on:input =" something = $event.target.value" >
546
+ <input
547
+ v-bind:value =" something"
548
+ v-on:input =" something = $event.target.value" >
547
549
```
548
550
549
551
コンポーネントと共に使用されるとき、これは簡単にできます:
550
552
551
553
``` html
552
- <custom-input v-bind:value =" something" v-on:input =" something = arguments[0]" ></custom-input >
554
+ <custom-input
555
+ :value =" something"
556
+ @input =" value => { something = value }" >
557
+ </custom-input >
553
558
```
554
559
555
560
そのため、コンポーネントを ` v-model ` と共に動かすためには、以下が必要です:
@@ -565,16 +570,15 @@ new Vue({
565
570
566
571
``` js
567
572
Vue .component (' currency-input' , {
568
- template: ' \
569
- <span>\
570
- $\
571
- <input\
572
- ref="input"\
573
- v-bind:value="value"\
574
- v-on:input="updateValue($event.target.value)"\
575
- >\
576
- </span>\
577
- ' ,
573
+ template: `
574
+ <span>
575
+ $
576
+ <input
577
+ ref="input"
578
+ v-bind:value="value"
579
+ v-on:input="updateValue($event.target.value)">
580
+ </span>
581
+ ` ,
578
582
props: [' value' ],
579
583
methods: {
580
584
// 値を直接的に更新する代わりに、このメソッドを使用して input の
@@ -637,7 +641,39 @@ new Vue({
637
641
638
642
<iframe width =" 100% " height =" 300 " src =" https://jsfiddle.net/chrisvfritz/1oqjojjx/embedded/result,html,js " allowfullscreen =" allowfullscreen " frameborder =" 0 " ></iframe >
639
643
640
- イベントインターフェイスは、より特殊な入力フィールドを作成するために使用することもできます。例えば、次のような可能性を想像してみてください:
644
+ ### コンポーネントの ` v-model ` のカスタマイズ
645
+
646
+ > 2.2.0 の新機能
647
+
648
+ デフォルトでは、コンポーネントにおける ` v-model ` は、 ` value ` を prop として、 ` input ` をイベントして用います。しかし、チェックボックスやラジオボタンなどの入力タイプを利用する場合は、 ` value ` prop をその他の目的で利用することができます。その際、 ` model ` オプションを利用することで、値の競合を避けることが可能です:
649
+
650
+ ``` js
651
+ Vue .component (' my-checkbox' , {
652
+ model: {
653
+ prop: ' checked' ,
654
+ event : ' change'
655
+ },
656
+ props: {
657
+ // これによって、 `value` prop を別の目的で利用することを許可します。
658
+ value: String
659
+ },
660
+ // ...
661
+ })
662
+ ```
663
+
664
+ ``` html
665
+ <my-checkbox v-model =" foo" value =" some value" ></my-checkbox >
666
+ ```
667
+
668
+ The above will be equivalent to:
669
+
670
+ ``` html
671
+ <my-checkbox
672
+ :checked =" foo"
673
+ @change =" val => { foo = val }"
674
+ value =" some value" >
675
+ </my-checkbox >
676
+ ```
641
677
642
678
``` html
643
679
<voice-recognizer v-model =" question" ></voice-recognizer >
0 commit comments