vue 组件中的 model: 允许自定义组件在使用 v-model 时定制 prop 和 event

本文详细解析了在Vue中如何为自定义组件正确使用v-model,包括组件内部model配置的具体作用,以及如何通过v-model实现组件的状态绑定和事件触发。通过实例展示了如何在自定义组件中定义prop和event,以及它们与v-model的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<my-checkbox v-model="foo" value="some value"></my-checkbox>


Vue.component('my-checkbox', {
  model: {
    prop: 'checked',
    event: 'change'
  },
})

Vue.component('my-checkbox', {
  model: {
    prop: 'checked',
    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`
    checked: {
      type: Number,
      default: 0
    }
  },
  // ...
})
<my-checkbox v-model="foo" value="some value"></my-checkbox>

  以上代码等价于:

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

不简写: 

<my-checkbox
  v-bind:checked="foo" 
  v-on:change="function(val) {return foo = val }"   
  value="some value">
</my-checkbox>

 

例子解析: 

 <my-checkbox v-model="foo" value="some value"></my-checkbox>
  model: {
    prop: 'checked',
    event: 'change'
  },

同时使用 v-model="foo" 和 model: { prop: 'checked', event: 'change' },  获得相关联后,相当于 

<my-checkbox

v-bind:checked="foo"  (因为 v-model 会默认绑定 checkbox 的 value 或 checked 值);

v-on:change="function(val) { return foo = val } (因为v-model 绑定的是value/checked 值。v-model="foo", 相当于 v-on 把 model 里的 change 事件和 value/checked="foo" 这个函数绑定在一起了 >

</my-checkbox>

总结:

自定义元素上使用 v-model="theFunction", 同时,组件里使用 model {prop:xxx, event:xxx}

可以把 model 里面定义的 prop 和event 自动绑定在 "theFuntion" 这个自定义事件上

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值