<input v-model="something">

v-model指令其实是下面的语法糖包装而成:

<input
:value="something"
@:input="something = $event.target.value">

在一个组件上使用 v-model 时,会简化为:

<custom-input
:value="something"
@input="value => { something = value }">
</custom-input>

因此,对于一个带有 v-model 的组件,它应该如下:

  • 接收一个 value prop
  • 触发 input 事件,并传入新值

利用 $emit 触发 input 事件:

this.$emit('input', value);

组件1:

Vue.component('my-component', {
template: `<div>
<input type="text" :value="currentValue" @input="handleInput"/>
</div>`,
computed:{
currentValue:function () {
return this.value
}
},
props: ['value'], //接收一个 value prop
methods: {
handleInput(event) {
var value = event.target.value;
this.$emit('input', value); //触发 input 事件,并传入新值
}
}
});
上面是将prop属性绑定到data里,以便修改 prop 数据(Vue不允许直接修改prop属性的值)#查看原理#

组件2:

Vue.component("my-counter", {
template: `<div>
<h1>{{value}}</h1>
<button @click="plus">+</button>
<button @click="minu">-</button>
</div>`,
props: {
value: Number //接收一个 value prop
},
data: function() {
return {
val: this.value
}
},
methods: {
plus() {
this.val = this.val + 1
this.$emit('input', this.val) //触发 input 事件,并传入新值
},
minu() {
if(this.val>0){
this.val = this.val-1
this.$emit('input', this.val) //触发 input 事件,并传入新值
}
}
}
});

https://www.jianshu.com/p/3dbbbc7a259c

最新文章

  1. cocos2dx骨骼动画Armature源码分析(三)
  2. 基于SSM的分页
  3. 控制移动端页面的缩放(meta)
  4. SQL SERVER 2005 DBCC IND命令说明
  5. [Android Pro] CountDownTimer倒计时
  6. SetHandleInformation设置内核对象标志
  7. sql关联excel查询
  8. 疑难杂症:java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
  9. hdu 3359 Kind of a Blur (高斯消元 浮点型)
  10. mybatis从dao传入多个参数到sqlmap时dao中要使用map或实例对象(如:user)作为参数传入, 否则报错找不到属性getter方法
  11. 启动hadoop,报错Error JAVA_HOME is not set and could not be found
  12. webserver/CGI
  13. [LeetCode][Python]16: 3Sum Closest
  14. HDU1004题解分析(字符串处理)
  15. Beta冲刺 第六天
  16. 【关于Java移位操作符&amp;按位操作符】
  17. 2018-2019-2 20165221 【网络对抗技术】-- Exp6 信息搜集与漏洞扫描
  18. python 查找日志关键字
  19. Spring4中使用通用Mapper
  20. 【Jenkins】Jenkins安装

热门文章

  1. Spring登录实例
  2. 智能家居-1.基于esp8266的语音控制系统(开篇)
  3. Google Analytics 学习笔记四 —— GA的Channels划分规则
  4. Android软件架构
  5. 3-10 Pandas 常用操作
  6. Codeforces Round #304 (Div. 2)(CF546E) Soldier and Traveling(最大流)
  7. (导航页)OpenStack-M版-双节点手工搭建-附B站视频
  8. R 基于朴素贝叶斯模型实现手机垃圾短信过滤
  9. 跟着 Alex 学python 1.安装
  10. Eclipse分享和检出(六)