vue封装组件v-model
时间: 2024-11-03 11:16:42 浏览: 15
以v-model与promise两种方式实现vue弹窗组件
Vue.js中的`v-model`指令是一个非常重要的特性,它实现了数据绑定和表单输入双向数据同步。当你在HTML模板中使用`v-model`,Vue会自动将元素的值与属性绑定到一个Vue实例的数据属性上,并且当你在元素上修改这个值时,对应的属性值也会实时更新。
在封装组件时,如果你想要复用`v-model`的行为,可以在组件内部处理`value`或`input`事件,然后通过`$emit`触发自定义的“model”事件,将组件内的数据状态发送给父组件。例如:
```html
<template>
<input type="text" v-model="localValue">
</template>
<script>
export default {
props: {
value: {
// 父组件传入的值,用于初始化本地值
required: true,
default: ''
}
},
data() {
return {
localValue: this.value // 初始化本地值
};
},
watch: {
// 当本地值变化时,通知父组件
localValue(newVal) {
this.$emit('model', newVal);
}
},
methods: {
// 如果有需要,也可以在这里提供一些处理用户输入的自定义函数
}
};
</script>
```
在这个例子中,父组件可以这样使用这个组件:
```html
<my-component v-model="parentValue"></my-component>
```
当`parentValue`改变时,组件内部的`v-model`会触发`model`事件,`parentValue`就会更新为新的输入值。
阅读全文