vue组件应用v-model

vue组件应用v-model

一、input上的v-model原理

vue中的v-model最常用的就是在input节点上,像下面这样:

<input type="text" v-model="message">

v-model实际上是一种数据和方法绑定的语法糖

<input type="text" :value="message" @input="message = $event.target.value">

当然也可以使用自定义方法进行事件绑定

<input type="text" :value="value" @input="sendMessage($event.target.value)">
二、组建上应用v-model

在parent父组件中使用child子组件,并进行双向数据绑定

  <child v-model="message"></child>	

结合上面input的解析,这里实际上也是一种语法糖

  <child :value="message" @input="message = $event"></child>	

注意这里取值是$event,而不是 $event.target.value,这是因为这里的 v-on:input实际上是子组件向父组件发射的事件名称。

温习一下子组件向父组件传递发射事件并附值的用法:

/***

在父组件中绑定一个事件,通过$event获取到子组件传递过来的值

<child @trans-message="getMessage($event)"></child>

然后在子组件中触发trans-message事件

<button @click="$emit('trans-message', 'Hello')"></button>

tip: 自定义的方法一定要使用‘“-” 连接符来命名,不能使用驼峰命名的方式。

*/

那么,在组件中使用 v-model 时,就需要我们在子组件中向父组件发射 input 事件。

child模板:

<input type="text" :value="value" @input="$emit('input', $event.target.value)">

同时需要在child组件中定义prop:

props: ['value']

至此,就可以实现在组件上应用 v-model实现双向数据绑定。

详情参考vue官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值