vue自定义组件:使用v-model定制prop和event

本文介绍了如何在封装自定义组件时,根据需求定制v-model的prop和event。v-model的本质是结合:value和@input的语法糖,而在自定义组件中,可以改变这一默认行为。通过设置selectedDate作为prop,change作为event,实现了子组件与父组件间的双向数据绑定。在父组件中使用时,v-model的值会绑定到date,并通过@change事件将更新传递回父组件。
摘要由CSDN通过智能技术生成

在封装一个时间组件时,在使用v-model的时候,定制了prop和event,因为默认情况下,一个组件上的v-model会把value用作prop、把input用作event,但是在我自定义的组件里,需求的与默认情况不符。因此需要配置子组件接收的 prop 名称,以及派发的事件名称需(即定制prop和event)来使用v-model。

一、v-model本质上就是一个语法糖,简单理解代码:

<input v-model="test">

本质上是:

<input :value="test" @input="test = $event.target.value">

@input是对<input>输入事件的一个监听:value="test"是将监听事件中的数据放入到input。

v-model不仅可以给input赋值还可以获取input中的数据,而且数据的获取是实时的,因为语法糖中是用@input对输入框进行监听的。既可以支持原生表单元素,也可以支持自定义组件。在组件的实现中,我们是可以。

二、如何使用?

1、在自定义组件内的click事件里面,向父组件传值,自定义函数为change。

      

2、自定义prop和event,props中使用自定义参数`selectedDate`代替`value`。

3、在父组件使用自定义组件,绑定v-model值。

                  

  <YearSeason v-model="date"></YearSeason>

此代码块相当于:

 <YearSeason
    :selectedDate="date"
    @change="val => {date = val}"
 ></YearSeason>

通过这个代码块梳理一遍就得知:子组件向父组件传递参数并自定义一个为change的函数,并在父组件接收子组件参数并传递给子组件,   

需要注意的是:!!!!!一个子组件实现双向绑定的操作,v-on:change(语法糖为@change)触发的change事件是由父组件来接收的,子组件本身不会接收到这个事件。再通过父子组件传值中的最普遍的 v-bind、props方法,将父组件中接收的change事件以及值再传递给子组件。

以上传值的过程,通过定制的prop和event使用v-model

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值