Vue自定义组件中使用v-model

本文详细介绍了Vue.js框架中v-model指令的工作原理及其在自定义组件中的应用。v-model是一种用于实现表单元素双向数据绑定的简洁方式,它简化了开发者在不同类型的输入控件上设置和获取数据的过程。

什么是v-model

你可以用 v-model 指令在表单 < input>、 < textarea> 及 < select> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
本质上讲v-model是v-bind以及v-on配合使用的语法糖。

<input v-model="text"/>
//相当于
<input :value="text" @input="text= $event.target.value" />

v-model的使用

v-model 在内部为不同的输入元素使用不同的 property 并抛出不同的事件:

  1. text 和 textarea 元素使用 value property 和 input 事件;
  2. checkbox 和 radio 使用 checked property 和 change 事件;
  3. select 字段将 value 作为 prop 并将 change 作为事件。

举例

<input v-model="message" placeholder="edit me">
//多行文本
<textarea v-model="message" placeholder="add multiple lines"><textarea>
//复选框
<input type="checkbox" id="checkbox" v-model="checkbox">

: 具体可查看vue.js官方文档.

v-model自定义组件中的使用

通过上面我们已经了解到v-model是v-bind 和v-on 联合使用的语法糖,也就是说我们定义的组件中只要做到

  1. 子接受到的porp值=value
    
  2. 监听子组件处罚的事件名 event = input
    

就可以实现数据的双向绑定
举例

<template>
    <div>
        <input  :value="str" @change="textstr($event.target.value)"/>

    </div>
</template>
<script>
    export default{
        props: {
            str:String
        },
        model:{
            prop:'str',
            event:'tex'
        },
        data () {
            return {
                
            }
        },
        methods: {
            textstr (value) {
                console.log(value)
                this.$emit('tex', value)
            }
        }

    }
</script>

使用时

 <textmodel v-model='lovingVue' ></textmodel>

上述代码中model为vue2.2.0版本新增属性
允许一个自定义组件在使用 v-model 时定制 prop 和 event。默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event,但是一些输入类型比如单选框和复选框按钮可能想使用 value prop 来达到不同的目的。使用 model 选项可以回避这些情况产生的冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值