vue在自定义组件中使用v-model进行数据绑定的方法


Posted in Javascript onMarch 25, 2019

本文介绍了vue v-model进行数据绑定,分享给大家,具体如下

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

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

示例:

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

<!-- parent -->

<template>

<p class="parent">

 <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>

 <Child @returnBack="turnBack" :give="sthGiveChild"></Child>

</p>

</template>

<script>

import Child from './Child.vue';

export default {

 data() {

  return {

   sthGiveChild: '给你100块'

  };

 },

 components: {

  Child

 },

 methods: {

  turnBack(val) {

   this.sthGiveChild = val;

  }

 }

}

</script>
<!-- child -->

<template>

<p class="child">

 <p>我是儿子,父亲对我说: {{give}}</p>

 <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow"   @click="returnBackFn">回应</a>

</p>

</template>

<script>

export default {

 props: {

  give: String

 },

 methods: {

  returnBackFn() {

   this.$emit('returnBack', '还你200块');

  }

 }

}
</script>

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

改用v-model

<!-- parent -->

<template>

<p class="parent">

 <p>我是父亲, 对儿子说: {{sthGiveChild}}</p>

 <Child v-model="sthGiveChild"></Child>

</p>

</template>

<script>

import Child from './Child.vue';

export default {

 data() {

  return {

   sthGiveChild: '给你100块'

  };

 },

 components: {

  Child

 }

}
</script>
<!-- child -->

<template>

<p class="child">

 <p>我是儿子,父亲对我说: {{give}}</p>

 <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow"   @click="returnBackFn">回应</a>

</p>

</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>

<p class="child">

 <p>我是儿子,父亲对我说: {{value}}</p>

 <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow"   @click="returnBackFn">回应</a>

</p>

</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 相关文章推荐
Ajax局部更新导致JS事件重复触发问题的解决方法
Oct 14 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
js判断输入字符串是否为空、空格、null的方法总结
Jun 14 Javascript
react实现pure render时bind(this)隐患需注意!
Mar 09 Javascript
Bootstrap DateTime Picker日历控件简单应用
Mar 25 Javascript
js学习总结之dom2级事件基础知识详解
Jul 27 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
Feb 10 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
Apr 17 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
在vue中使用Base64转码的案例
Aug 07 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
Node.js之readline模块的使用详解
Mar 25 #Javascript
Javascript的this详解
Mar 23 #Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 #Javascript
vue中组件的3种使用方式详解
Mar 23 #Javascript
ES6入门教程之Array.from()方法
Mar 23 #Javascript
setTimeout与setInterval的区别浅析
Mar 23 #Javascript
如何通过setTimeout理解JS运行机制详解
Mar 23 #Javascript
You might like
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
php self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
详解Python中with语句的用法
2015/04/15 Python
Python 多核并行计算的示例代码
2017/11/07 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
24式加速你的Python(小结)
2019/06/13 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
大学生新学期计划书
2014/04/28 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL