vue 自定义组件绑定model+弹出选择支持上下按键选择

本文介绍了如何在Vue自定义组件中实现v-model绑定,并添加键盘事件来支持上下按键选择功能。通过定义model的prop和event属性,实现父组件与子组件间的双向数据绑定。在子组件中,监听键盘事件,动态改变选中项并更新父组件的数据。
摘要由CSDN通过智能技术生成

参考地址v-modelicon-default.png?t=N7T8https://v2.cn.vuejs.org/v2/guide/components-custom-events.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E7%9A%84-v-model

原文代码

Vue.component('base-checkbox', {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: {
    checked: Boolean
  },
  template: `
    <input
      type="checkbox"
      v-bind:checked="checked"
      v-on:change="$emit('change', $event.target.checked)"
    >
  `
})

现在在这个组件上使用 v-model 的时候:
<base-checkbox v-model="lovingVue"></base-checkbox>

这里的 lovingVue 的值将会传入这个名为 checked 的 prop。同时当 <base-checkbox> 触发一个 change 事件并附带一个新的值的时候,这个 lovingVue 的 property 将会被更新

注意你仍然需要在组件的 props 选项里声明 checked 这个 prop。

主要需要在子组件增加mode,实现绑定的值和事件

关键点

model双向绑定,属性接收两个参数,类型:{ prop?: string, event?: string }
1.prop 也就是调用该组件的父组件中使用v-model指令绑定的属性
2.event 对应的是修改prop指定属性的值的函数

子组件中需要在data里声明个变量取父窗口通过prop传来的值

子组件触发改变内容, 创建方法onChange

第1个参: 是 model里event指定的change,

第2个参: 是 model里prop指定的变量,修改此变量,父窗口通过v-model就实现了双向绑定

onChange(){
          this.$emit('change','子组件触发改变了内容 ')         
 }

子组件代码

<template>
    <div>
        <!-- 
        {
  { dataVal }}
        <p><button @click="onChange">改变内容</button></p>
         -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值