vue自定義組件實現(xiàn)雙向綁定方式
vue自定義組件實現(xiàn)雙向綁定
在項目開發(fā)中需要實現(xiàn)一個自定義組件,一個輸入框,可以在輸入框中輸入值檢索出值,也可以打開彈窗去選擇。
效果如下圖

目標
希望該組件可以通過v-model綁定變量,并實現(xiàn)雙向綁定
實現(xiàn)
//父組件
<LazyBasedataModalTree
v-model="assitone"
title="彈窗標題"
:tableName="tableName"
></LazyBasedataModalTree>
data(){
return{
assitone:""
}
}
//子組件
<template>
<div class="loader">
<input v-model="text" @on-change="handleChange"></input>
</div>
</template>
<script>
export default {
name: "lazyBasedataModalTree",
model:{
event:'update'
},
data(){
return{
assitone:""
}
},
methods: {
handleChange(){
this.$emit('update', this.text)
}
},
};
</script>
<style scoped>
</style>以上代碼即可實現(xiàn)雙向數(shù)據(jù)綁定,上述子組件的代碼只是提供示例,具體代碼需要根據(jù)需求去實現(xiàn)。
原理
實際v-model是由v-bind和on-change事件共同實現(xiàn)的,如下:
<LazyBasedataModalTree
v-bind="assitone"
@on-change="(val) => assitone = val"
title="彈窗標題"
:tableName="tableName"
></LazyBasedataModalTree>
//或者
<LazyBasedataModalTree
:value="assitone"
@on-change="(val) => assitone = val"
title="彈窗標題"
:tableName="tableName"
></LazyBasedataModalTree>因此開發(fā)自定義組件,可以自己實現(xiàn)on-change這一步,具體觸發(fā)事件,可以通過model屬性里面的event進行設(shè)置。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
在 vue-cli v3.0 中使用 SCSS/SASS的方法
關(guān)于如何在 vue-cli v3.0 中使用 SCSS/SASS,這里提供三種方案。感興趣的朋友通過本文一起學習吧2018-06-06
Vue 3 TypeScript 接口Interface使用示例詳解
Vue3中TypeScript的接口用于定義組件props、數(shù)據(jù)模型、事件等類型結(jié)構(gòu),提升代碼可讀性與維護性,常見場景包括props類型、響應式數(shù)據(jù)、狀態(tài)對象、事件類型等,本文給大家介紹Vue 3 TypeScript接口Interface使用示例,感興趣的朋友一起看看吧2025-07-07

