Vue.js自定义事件的表单输入组件方法
作者:Allin丶 时间:2024-05-05 09:12:24
Vue.js使用自定义事件的表单输入组件
自定义事件可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。要牢记:
<input v-model="something">
这不过是以下示例的语法糖:
<input
v-bind:value="something"
v-on:input="something = $event.target.value">
所以在组件中使用时,它相当于下面的简写:
<custom-input
v-bind:value="something"
v-on:input="something = arguments[0]">
</custom-input>
所以要让组件的 v-model 生效,它应该 (从 2.2.0 起是可配置的):
接受一个 value prop
在有新的值时触发 input 事件并将新值作为参数
我们来看一个非常简单的货币输入的自定义控件:--在父组件中引用子组件模板时用绑定v-model数据:
<currency-input v-model="price"></currency-input>
Vue.component('currency-input', {
template: '\
<span>\
$\
<input\
ref="input"\
v-bind:value="value"\
v-on:input="updateValue($event.target.value)"\
>\
</span>\
',
props: ['value'],
methods: {
// 不是直接更新值,而是使用此方法来对输入值进行格式化和位数限制
updateValue: function (value) {
var formattedValue = value
// 删除两侧的空格符
.trim()
// 保留 2 位小数
.slice(
0,
value.indexOf('.') === -1
? value.length
: value.indexOf('.') + 3
)
// 如果值尚不合规,则手动覆盖为合规的值
if (formattedValue !== value) {
this.$refs.input.value = formattedValue
}
// 通过 input 事件带出数值
this.$emit('input', Number(formattedValue))
}
}
})
自定义组件的 v-model
2.2.0 新增
默认情况下,一个组件的 v-model 会使用 value prop 和 input 事件。但是诸如单选框、复选框之类的输入类型可能把 value 用作了别的目的。model 选项可以避免这样的冲突:
Vue.component('my-checkbox', {
model: {
prop: 'checked',
event: 'change'
},
props: {
checked: Boolean,
// 这样就允许拿 `value` 这个 prop 做其它事了
value: String
},
// ...
})
<my-checkbox v-model="foo" value="some value"></my-checkbox>
上述代码等价于:
<my-checkbox
:checked="foo"
@change="val => { foo = val }"
value="some value">
</my-checkbox>
注意你仍然需要显式声明 checked 这个 prop。
来源:http://blog.csdn.net/xiechengjian/article/details/78982604
标签:vue,自定义,表单,组件
0
投稿
猜你喜欢
php实现搜索一维数组元素并删除二维数组对应元素的方法
2023-10-09 05:45:40
MySql数据库备份的几种方式
2024-01-17 03:15:05
TensorFlow卷积神经网络AlexNet实现示例详解
2022-06-14 21:17:30
详解Python中pyautogui库的最全使用方法
2022-11-17 17:07:14
在 Python 中进行 One-Hot 编码
2023-04-06 06:02:55
python之列表推导式的用法
2021-04-22 18:54:59
Quoted-printable 编码介绍、Quoted-printable编码解码转换方法
2022-02-20 07:46:05
PL/SQL中编写Oracle数据库分页的存储过程
2024-01-16 08:50:24
javascript拖拽效果延伸学习
2024-04-16 08:52:24
Mysql 数据库常用备份方法和注意事项
2024-01-17 15:43:25
在Python中使用next()方法操作文件的教程
2023-01-17 11:21:40
Python图片处理之图片采样处理详解
2021-01-14 12:58:36
聊聊MySQL中的参数
2024-01-24 20:47:01
Pycharm连接远程服务器过程图解
2023-07-25 04:37:53
Python类中的装饰器在当前类中的声明与调用详解
2021-03-07 10:29:35
基于AJAX技术提高搜索引擎排名
2008-01-24 12:45:00
仿google的asp分页代码
2009-03-08 18:27:00
JScript 的内存回收
2007-10-16 20:02:00
Django中外键ForeignKey介绍使用
2023-05-18 01:26:30
Python新手学习标准库模块命名
2021-01-16 05:18:06