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 调试器简介
Feb 21 Javascript
如何将JS的变量值传递给ASP变量
Dec 10 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
thinkphp实现无限分类(使用递归)
Dec 19 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 Javascript
JavaScript省市区三级联动菜单效果
Sep 21 Javascript
微信小程序开发(二)图片上传+服务端接收详解
Jan 11 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
Jun 23 Javascript
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
vue登录注册及token验证实现代码
Dec 14 Javascript
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
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
python基于property()函数定义属性
2020/01/22 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
好的演讲稿开场白
2013/12/30 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
房屋出租协议书
2014/04/10 职场文书
房屋买卖协议书
2014/04/10 职场文书
市场总经理岗位职责
2014/04/11 职场文书
团代会宣传工作方案
2014/05/08 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
社会实践单位意见
2015/06/05 职场文书
经销商会议开幕词
2016/03/04 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
MySQL学习必备条件查询数据
2022/03/25 MySQL