转载自  vue组件,自定义v-model方法

1
<my-component v-model="obj"></my-component>

 

在使用my-component组件时,为了实现双向绑定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Vue.component('my-component', {
    props: {
        obj: Object,
    },
    model: {
        prop: 'obj',
        event: 'change'
    },
    methods: {
        onchange: function() {
            this.$emit('change'this.obj);
        }
    }
});

  

上面代码中

1.props对象中,需要定义一个能够从外部传入的变量,这里我定义了一个obj。这样就可以用下面这行代码进行传递值

1
<my-component :obj="obj对象"></my-component>

  

2.为了能够使用v-model语法糖,我们定义了model对象。model对象包含两个属性,一个是prop,一个是event。prop默认是value,event默认是input,我们这里写model是为了改变默认的东西,使用我们自己定义的变量。写好之后就可以用下面这行代码了。

1
<my-component v-model="obj对象"></my-component>

  

3.虽然可以这么用,但还是不能从子组件传递数据到外部。因为change事件并没有被触发。这个change事件是我自定义的,所以这里需要写一个方法onchange。方法名是次要的,主要的是里面的那行代码。

1
this.$emit('change', this.obj);

  

这行两个参数,第一个是事件名,和model里的event属性的值要一样。第二个参数是改变的值。写第二个变量,才能改变外部的数据,实现双向绑定的功能。

文笔不行,没办法表达出清晰的思路,贴上早上翻阅的一些有用的链接,以供参考。

参考:

https://jsfiddle.net/yyx990803/58kxs8tj/

https://github.com/vuejs/vue/issues/4373

http://lizhihua.me/2016/10/31/vue/component_v-model/

vue组件自定义v-model相关推荐

  1. vue组件通信v兄弟组件通信eventbus遇到的问题(多次触发、第一次不触发)

    组件通讯包括:父子组件间的通信和兄弟组件间的通信.在组件化系统构建中,组件间通信必不可少的 (vuex以后再说). 父组件--> 子组件 1. 属性设置 父组件关键代码如下: 1 <tem ...

  2. Vue组件自定义事件

    <!DOCTYPE html> <html><head><meta charset="utf-8"><script src=& ...

  3. Vue如何自定义组件?超详细Vue自定义组件指南!使用自定义组件减少重复造轮子! ∠( °ω°)/ 前端知识

    文章目录 使用意义 基础使用 给组件添加属性 传递事件 自定义组件的v-model 剖析v-model原理 使用示例 插槽 使用意义 有时候一组HTML代码可能会在多出使用(比如页眉页脚).如果我们把 ...

  4. 使用VUE组件创建SpreadJS自定义单元格(二)

    在上篇中,我们介绍了如何通过设置runtimeCompiler为true,在Vue中实现了动态创建电子表格组件.想了解具体内容可看点击查看使用VUE组件创建SpreadJS自定义单元格(一). 但是在 ...

  5. Vue组件绑定自定义事件

    Vue组件使用v-on绑定自定义事件: 可以分为3步理解: 1.在组件模板中按照正常事件机制绑定事件: template: '<button v-on:click="increment ...

  6. 简单了解Vue的自定义组件与生命周期

    Vue的自定义组件 定义格式 Vue.component(组件名称, { props:组件的属性, data: 组件的数据函数, template: 组件解析的标签模板 }) 代码解析(详细解释在注解 ...

  7. Vue组件及自定义事件

    目录 Vue.js 组件 动态 Prop Prop 验证 Vue.js 组件 - 自定义事件 data 必须是一个函数

  8. npm上传自定义vue组件入门

    webpack版本是1.13.1 自己写的VUE组件,上传到npm,然后通过npm install xxx -S 安装到 package.json里面的 "dependencies" ...

  9. Vue组件学习之组件自定义事件

    主要介绍组件的自定义事件的概念,使用等. 何为组件自定义事件: 组件自定义事件是一种组件间的通信方式,方向是 子组件====>父组件. 使用场景:A是子组件,B是父组件,如果要把B的数据传给A, ...

最新文章

  1. Pandas:透视表(pivotTab)和交叉表(crossTab)
  2. 【FPGA】单端口RAM的设计(异步读、异步写)
  3. 剑指offer 算法 (综合)
  4. mysql 代理作业_查看SQLServer 代理作业的历史信息
  5. Windows下MySQL 5.6.19 general_log的设置(亲测)
  6. 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)
  7. 计算机的键盘如何保养,知识每天涨一点:快捷键2 键盘键位知识 电脑小保养
  8. Windows 10 版本信息
  9. oracle定义变量sql赋值_ORACLE获取SQL绑定变量值的方法总结
  10. 地图图表、柱状图、条形图、折线图、中国地图、世界地图、省市地图、仪表盘、雷达图、饼图、散点图、气泡图、瀑布图、堆叠图、热力图、桑基图、关系图、漏斗图、Axure原型、rp原型、产品原型
  11. 了解PHP中$_SERVER变量对路径的解析
  12. 怎么查自己电脑服务器信息吗,怎么查看自己云服务器信息吗
  13. ZBrush、Maya和3dmax的区别?
  14. Simon 5有哪些新功能? Simon 5 Mac版新功能介绍
  15. 他只靠写代码,登上了胡润富豪榜!
  16. buuctf crypto Quoted-printable
  17. python读取千万级数据库数据类型_Python 基于Python从mysql表读取千万数据实践
  18. 微信小程序调用update更新数据库数据无效
  19. QQ自动强制加好友代码
  20. raid5的配置(超详细)

热门文章

  1. 谁动了我的选择器?深入理解CSS选择器优先级
  2. C++二维数组作为函数参数
  3. [JavaWeb-XML]XML概述
  4. AcWing 3195. 有趣的数
  5. 二叉树的中序遍历非递归方法(算法导论第三版12.1-3)
  6. linux把svs文件分割,freeebsd,pkg_add,svsup,make改服务器的设定
  7. 【SPOJ2666】QTree4【链分治】
  8. HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)
  9. 2020牛客国庆集训派对day8
  10. 2020牛客国庆集训派对day2 MATRIX MULTIPLICATION CALCULATOR