Vue控制子元件的顯示隱藏的四種辦法
1. v-model
//使用
<Model v-model="Model" >
</Model>
// data 中 model :false
// 子元件
<template>
<transition name="model" tag="div">
<div class="model" v-if="value" >
DOM
</div>
</transition>
</template>
<script>
export default {
props: {
value: { type: Boolean, default: false },
},
data() {
return {};
},
methods: {
ConfirmHandler() {
this.$emit("input", false);
this.$emit("Confirm");
},
CancelHandler() {
this.$emit("input", false);
this.$emit("Cancel");
}
}
};
</script>
解析:
<input v-model="text" />
等同於如下,model為@input的一個糖語法
<input :value="text" @input="e => text = e.target.value"/>
由此推算,子元件可以通過value獲取父元件傳來的值,可用$emit("input")觸發父元件的方法input方法
2 .sync 修飾符
//使用
<Model :visible.sync="Model" >
</Model>
// data 中 model :false
// 子元件
<template>
<transition name="modal" tag="div">
<div class="model" v-if="visible" >
DOM
</div>
</transition>
</template>
<script>
export default {
props: {
visible: { type: Boolean, default: false },
},
data() {
return {};
},
methods: {
ConfirmHandler() {
this.$emit("update:visible", false);
this.$emit("Confirm");
},
CancelHandler() {
this.$emit("update:visible", false);
this.$emit("Cancel");
}
}
};
</script>
解析:
<Model:visible.sync="dialogVisible" />
<Model
:visible="Visible"
@update:visible="newVisible => Visible = newVisible"
/>
ref 呼叫子元件方法
// 使用
<Model ref="Model" > </Model>
methods:{
ChangeModel(){
this.$refs.Model.show()
}
}
//子元件
<template>
<transition name="modal" tag="div">
<div class="model" v-if="model" >
DOM
</div>
</transition>
</template>
<script>
export default {
data() {
return {
model:false,
};
},
methods: {
show(){
this.model = true
},
ConfirmHandler() {
this.show()
this.$emit("Confirm");
},
CancelHandler() {
this.show()
this.$emit("Cancel");
}
}
};
</script>
在元件外通過Props控制顯示隱藏
監聽子元件的回撥函式,通過Props控制子元件的顯示隱藏。比較簡單。
Ps:暫時發現四中辦法,很多UI元件都是通過v-model來控制元件的顯示隱藏,這種使用起來程式碼看著更美觀。 狀態修改,第一、二、四種都是在元件外修改的狀態,第三種是在元件內部修改狀態。
相關文章
- # Flutter控制元件的顯示和隱藏的三種方式Flutter控制元件
- tabcontrol控制元件隱藏,顯示控制元件
- 用js控制div的顯示與隱藏JS
- 如何控制多個同級檢視的顯示隱藏(Vue.js)Vue.js
- Element ui的Table元件的列的顯示於隱藏UI元件
- 如何在fragment中控制DrawerLayout的顯示和隱藏Fragment
- JavaScript動畫方式控制div元素的隱藏和顯示JavaScript動畫
- js動態控制表單的顯示和隱藏JS
- view的隱藏和顯示View
- mac顯示隱藏檔案,取消顯示隱藏檔案Mac
- vue.js顯示與隱藏(v-if)Vue.js
- Three.js控制物體顯示與隱藏的方法JS
- Boostrap5透過JS控制Offcanvas的顯示隱藏JSCanvas
- vue 滑鼠移入顯示圖示 ,滑鼠移出隱藏圖示Vue
- Mac下顯示和隱藏隱藏檔案的命令Mac
- js設定元素控制元件顯示和隱藏程式碼例項JS控制元件
- MAC如何顯示隱藏檔案和隱藏隱藏檔案的命令Mac
- 關閉(隱藏)控制檯上顯示的檔案路徑
- 使用jQuery控制table表格的tr行顯示和隱藏效果jQuery
- OSX中隱藏和顯示[隱藏檔案]的命令列命令列
- steam隱藏的遊戲怎麼顯示出來 steam隱藏顯示遊戲方法介紹遊戲
- excel隱藏的部分如何顯示出來 excel裡面怎麼顯示隱藏部分Excel
- iOS 隱藏&顯示tabBariOStabBar
- MacOS X隱藏和顯示隱藏檔案Mac
- Mac顯示和隱藏“隱藏檔案”命令Mac
- javascript隱藏和顯示div的方法JavaScript
- jQuery動畫的顯示與隱藏效果jQuery動畫
- jQuery動畫的顯示與隱藏效果!jQuery動畫
- NavigationBar的隱藏與顯示Navigation
- jQuery控制div顯示和隱藏程式碼例項jQuery
- 動態控制C4C UI元素的顯示和隱藏UI
- 遨翔在知識的海洋裡----(vue之顯示隱藏的效果)Vue
- 隱藏資料夾怎麼取消隱藏 關閉隱藏檔案的辦法
- jQuery 效果 – 隱藏和顯示jQuery
- mac隱藏檔案顯示Mac
- Mac 顯示隱藏檔案Mac
- 由顯示/隱藏引出的CSSbug(轉)CSS
- 由顯示/隱藏引出的CSS Bug(轉)CSS