vue如何在自定义组件中使用v-model


Posted in Javascript onMay 14, 2018

v-model指令

所谓的“指令”其实就是扩展了HTML标签功能(属性)。

先来一个组件,不用vue-model,正常父子通信

<!-- parent -->
<template>
<div class="parent">
  <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>
  <Child @returnBack="turnBack" :give="sthGiveChild"></Child>
</div>
</template>
<script>
import Child from './Child.vue';
export default {
  data() {
    return {
      sthGiveChild: '给你100块'
    };
  },
  components: {
    Child
  },
  methods: {
    turnBack(val) {
      this.sthGiveChild = val;
    }
  }
}
</script>
<!-- child -->
<template>
<div class="child">
  <p>我是儿子,父亲对我说: {{give}}</p>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="returnBackFn">回应</a>
</div>
</template>
<script>
export default {
  props: {
    give: String
  },
  methods: {
    returnBackFn() {
      this.$emit('returnBack', '还你200块');
    }
  }
}
</script>

点击回应后,父亲对儿子说的话变成了儿子的回应。儿子收到的信息也变了,实现通信。

改用v-model

<!-- parent -->
<template>
<div class="parent">
  <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>
  <Child v-model="sthGiveChild"></Child>
</div>
</template>
<script>
import Child from './Child.vue';
export default {
  data() {
    return {
      sthGiveChild: '给你100块'
    };
  },
  components: {
    Child
  }
}
</script>
<!-- child -->
<template>
<div class="child">
  <p>我是儿子,父亲对我说: {{give}}</p>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="returnBackFn">回应</a>
</div>
</template>
<script>
export default {
  props: {
    give: String
  },
  model: {
    prop: 'give',
    event: 'returnBack'
  },
  methods: {
    returnBackFn() {
      this.$emit('returnBack', '还你200块');
    }
  }
}
</script>

文案虽有不同,但是效果最终是一致的。

看看官方自定义组件的v-model

官方例子https://vuefe.cn/v2/api/#model

有这么一句话: 默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event。

尝试把上边子组件的例子改一下,也是跑的通的

<!-- child -->
<template>
<div class="child">
  <p>我是儿子,父亲对我说: {{value}}</p>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click="returnBackFn">回应</a>
</div>
</template>
<script>
export default {
  props: {
    value: String
  },
  methods: {
    returnBackFn() {
      this.$emit('input', '还你200块');
    }
  }
}
</script>

做一下总结:

如果你懒,不想自己去处理事件,那就用默认的 'value' && 'input' 事件去处理,如果用原生事件的,甚至连model属性也可以省去。

如果你想自己的代码比较明确,区分出自定义事件,那么下面的组合才是你的菜。

prop和event看你自己心情定义,当然要知名见意【尽量避开关键字】

model: {
prop: 'someProp', // 注意,是prop,不带s。我在写这个速记的时候,多写了一个s,调试到怀疑人生
event: 'someEvent'
}
this.$emit('someProp', [returnValueToParent])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 研究心得 取得属性的值
Nov 30 Javascript
javascript 二维数组的实现与应用
Mar 16 Javascript
jquery $.ajax各个事件执行顺序
Oct 15 Javascript
jQuery 源码分析笔记(2) 变量列表
May 28 Javascript
实现web打印的各种方法介绍及实现代码
Jan 09 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
轻量级的原生js日历插件calendar.js使用指南
Apr 28 Javascript
Vue获取DOM元素样式和样式更改示例
Mar 07 Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
Sep 05 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
Sep 16 Javascript
搭建基于express框架运行环境的方法步骤
Nov 15 Javascript
JavaScript常用数学函数用法示例
May 14 #Javascript
JavaScript中常见内置函数用法示例
May 14 #Javascript
纯js封装的ajax功能函数与用法示例
May 14 #Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
May 14 #Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 #Javascript
jQuery中元素选择器(element)简单用法示例
May 14 #jQuery
jQuery中的类名选择器(.class)用法简单示例
May 14 #jQuery
You might like
PHP与javascript对多项选择的处理
2006/10/09 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
javascript String 的扩展方法集合
2008/06/01 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
图文详解vue框架安装步骤
2019/02/12 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
Python中特殊函数集锦
2015/07/27 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
房产销售经理职责
2013/12/20 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
中秋节超市促销方案
2014/01/30 职场文书
银行工作检查书范文
2014/01/31 职场文书
党员党性分析材料
2014/02/17 职场文书
经典商业广告词
2014/03/13 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
个人作风建设心得体会
2014/10/22 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server