Vue表单元素双向绑定

  1. v-model 详解

​ v-model本质上是一个语法糖。 应用在输入框上 就是value属性和input事件的合写

//v-model 应用于input上
<template>
    <div>
        <input v-model='msg1' type='text' />
        //在输入框内输入内容 输入框的value改变 触发input事件 将输入框的新value值传回msg2中
        <input :value='msg2' @input='msg = $event.target.value' type='text' />
    </div>
</template>

<script>
    export default {
        data(){
          return {
              msg1:'',
              msg2:''
          }  
        },
        methods: {
            changed(){
                Bus.$emit('sendMsg','今日晴天 适合郊游')
            }
        },
    }
</script>`
  1. 使用v-model完成父子组件的数据传递

​ 父组件使用v-model的前提为 子组件内已经配置好了相应的input事件 和v-bind属性

<template>
    <div>
        <Son :citiId = 'selectId' @change = 'selecteId = $event'></Son>
        //本质上为
        //<Son :citiId = 'selectId' @input = 'selecteId = $event'></Son>
        //<Son v-model='selectId'></Son>
        
        
        
    </div>
</template>

<script>
    export default {
        import Son from ''
        components:{
        	Son
    	},
        data(){
          return {
              selectId:'102'
          }  
        },
        methods: {
            
        },
    }
</script>

Son组件

<template>
    <div>
        
        <select :value='value' @changed = 'handleChange'>
            <option value='101'>南京</option>
            <option value='102'>上海</option>
            <option value='103'>北京</option>
            <option value='104'>武汉</option>
            <option value='105'>深圳</option>
        </select>
    </div>
</template>

<script>
    export default {
        props:{
          //v-model中默认绑定属性为value 所以在接收数据时固定为value值  
          value:String
        },
        methods: {
            changed(e){
        //父组件配置v-model v-model实质上是触发@input事件 所以传输数据时key值应该为input  
                this.$emit('input',e.target.value)
            }
        },
    }
</script>

.sync修饰符进行双向绑定

<template>
    <div>
        <Son :citiId.sync = 'selectId' @change = 'selecteId = $event'></Son>
        //本质上为   通过.sync绑定的属性  在子组件中通过props接收时 属性名不用固定为value
        //仅事件名固定为 @update
        //<Son :citiId = 'selectId' @update = 'selecteId = $event'></Son>
        //<Son v-model='selectId'></Son>
        
        
        
    </div>
</template>

<script>
    export default {
        import Son from ''
        components:{
        	Son
    	},
        data(){
          return {
              selectId:'102'
          }  
        },
        methods: {
            
        },
    }
</script>
  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值