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 相关文章推荐
理解Javascript_02_理解undefined和null
Oct 11 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
Jan 08 Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
基于JavaScript实现简单的音频播放功能
Jan 07 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
layer.open的自适应及居中及子页面标题的修改方法
Sep 05 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 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 cookie名使用点号(句号)会被转换
2014/10/23 PHP
asp 的 分词实现代码
2007/05/24 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
JS实现复制功能
2017/03/01 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
vue和webpack打包项目相对路径修改的方法
2018/06/15 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
应用心理学个人的求职信
2013/12/08 职场文书
销售简历自我评价
2014/01/24 职场文书
银行类自荐信
2014/02/04 职场文书
2014年租房协议书范本
2014/10/30 职场文书
个人催款函范文
2015/06/24 职场文书
品德与社会教学反思
2016/02/24 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python