自定义 v-model
Vue2 自定义v-model
参考文档
// CustomVModel.vue
<template>
<div class="search">
<el-input
type="text"
placeholder="请输入搜索内容"
v-model="text"
@input="inputHandle">
</el-input>
</div>
</template>
<script>
export default {
name: 'Search',
model: {
prop: 'searchValue',
event: 'change'
},
props: {
searchValue: String
},
data() {
return {
text: ''
}
},
watch: {
searchValue: {
immediate: true,
handler(val) {
this.text = val;
}
}
},
methods: {
inputHandle() {
this.$emit('change', this.text)
}
}
}
</script>
<style scoped>
.search{
}
</style>
// 使用
<CustomVModel v-model="" />
Vue3 自定义 v-model
参考文档
<template>
<input type="text"
:value="foo"
@input="$emit('update:foo', $event.target.value)"
>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
name: 'CustomVModel',
props: {
foo: String
}
})
</script>
<style scoped>
</style>
// 使用
<template>
<CustomVModel v-model:foo="inputValue"></CustomVModel>
{{inputValue}}
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue'
import CustomVModel from './../components/CustomVModel.vue'
export default defineComponent({
name: 'Home',
components: {
CustomVModel
},
setup () {
const inputValue = ref()
return {
inputValue
}
}
})
</script>
<style scoped>
</style>