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 相关文章推荐
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
Nov 22 Javascript
js验证整数加保留小数点的简单实例
Dec 02 Javascript
js中typeof的用法汇总
Dec 12 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
js对象的复制继承实例
Jan 10 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
Sep 08 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
Dec 02 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
Jul 22 Javascript
jQuery实现点击查看大图并以弹框的形式居中
Aug 08 Javascript
详解vue移动端项目代码拆分记录
Mar 15 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
Zerg建筑一览
2020/03/14 星际争霸
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
php遍历目录viewDir函数
2009/12/15 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
Python模拟百度登录实例详解
2016/01/20 Python
用Python写冒泡排序代码
2016/04/12 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Python中is和==的区别详解
2018/11/15 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
房产买卖委托公证书
2014/04/04 职场文书
《画家乡》教学反思
2014/04/22 职场文书
报效祖国演讲稿
2014/09/15 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
小学体育教学随笔
2015/08/14 职场文书
virtualenv隔离Python环境的问题解析
2022/06/21 Python