1. 程式人生 > >Vue中用v-model實現父元件和子元件之間的資料通訊

Vue中用v-model實現父元件和子元件之間的資料通訊

在Vue中實現父子元件之間的資料通訊,除了用傳統的Props/emit還有sync外,還能使用v-model來實現(2.2.0 新增)。

型別:{ prop?: string, event?: string }

model允許一個自定義元件在使用 v-model 時定製 prop 和 event。預設情況下,一個元件上的 v-model 會把 value 用作 prop 且把 input 用作 event,但是一些輸入型別比如單選框和複選框按鈕可能想使用 value prop 來達到不同的目的。使用 model 選項可以迴避這些情況產生的衝突。

//parent
<my-checkbox v-
model="foo" value="some value"></my-checkbox> //children Vue.component('my-checkbox', { model: { prop: 'counter', event: 'change' }, props: { // this allows using the `value` prop for a different purpose value: String, // use `checked` as the prop which take the place of `value`
counter: { type: Number, default: 0 } }, methods:{ fn(){ this.$emit('change', this.counter+2) } }, template: '<button @click="fn()">add counter</button>' // ... })

上面的程式碼相當於

<my-checkbox
  :counter="foo"
  @change="val => { foo = val }"
  value="some value"
>
</my-checkbox>