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 相关文章推荐
jQuery使用手册之三 CSS操作
Mar 24 Javascript
javascript之对系统的toFixed()方法的修正
May 08 Javascript
js 调用百度地图api并在地图上进行打点添加标注
May 13 Javascript
Bootstrap每天必学之按钮
Nov 26 Javascript
jQuery的each循环用法简单示例
Jun 12 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
Jul 11 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
Feb 09 Javascript
Node.js实现发送邮件功能
Nov 06 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
Aug 10 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
深入理解 ES6中的 Reflect用法
Jul 18 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
php实现简单文件下载的方法
2015/01/30 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
python daemon守护进程实现
2016/08/27 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
python中的for循环
2018/09/28 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
介绍一下linux文件系统分配策略
2013/02/25 面试题
Shell如何接收变量输入
2012/09/24 面试题
出纳员岗位责任制
2014/02/11 职场文书
大学生创业项目方案
2014/03/08 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
公司应聘自荐书
2014/06/14 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书