[转] vue 自定义组件使用v-model
2024-09-08 16:06:44
<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
最新文章
- cocos2dx骨骼动画Armature源码分析(三)
- 基于SSM的分页
- 控制移动端页面的缩放(meta)
- SQL SERVER 2005 DBCC IND命令说明
- [Android Pro] CountDownTimer倒计时
- SetHandleInformation设置内核对象标志
- sql关联excel查询
- 疑难杂症:java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
- hdu 3359 Kind of a Blur (高斯消元 浮点型)
- mybatis从dao传入多个参数到sqlmap时dao中要使用map或实例对象(如:user)作为参数传入, 否则报错找不到属性getter方法
- 启动hadoop,报错Error JAVA_HOME is not set and could not be found
- webserver/CGI
- [LeetCode][Python]16: 3Sum Closest
- HDU1004题解分析(字符串处理)
- Beta冲刺 第六天
- 【关于Java移位操作符&;按位操作符】
- 2018-2019-2 20165221 【网络对抗技术】-- Exp6 信息搜集与漏洞扫描
- python 查找日志关键字
- Spring4中使用通用Mapper
- 【Jenkins】Jenkins安装
热门文章
- Spring登录实例
- 智能家居-1.基于esp8266的语音控制系统(开篇)
- Google Analytics 学习笔记四 —— GA的Channels划分规则
- Android软件架构
- 3-10 Pandas 常用操作
- Codeforces Round #304 (Div. 2)(CF546E) Soldier and Traveling(最大流)
- (导航页)OpenStack-M版-双节点手工搭建-附B站视频
- R 基于朴素贝叶斯模型实现手机垃圾短信过滤
- 跟着 Alex 学python 1.安装
- Eclipse分享和检出(六)