- 在vue中父組件向自子組件傳遞props,子組件向父組件傳遞屬性是用$emit(發(fā)布訂閱)
- 下面是一個模態(tài)框示例,可以利用到這兩個屬性。基本邏輯是點擊頁面上一個按鈕,
彈出彈框,點擊彈框上關閉按鈕,隱藏彈框
- (這不是很簡單嘛。。。我jq兩行就可以實現(xiàn))確實是但是jq實現(xiàn)的并不是組件,不能每次都把html和js都復制一遍吧,這樣工作效率未免太低了,(人家蓋房子都用水泥澆筑了,你非要搬磚,你累不累啊)
css
<style>
.mask {
width: 100%;
height: 100%;
position: fixed;
background: rgba(0, 0, 0, .35);
top: 0;
left: 0
}
.dialog {
width: 400px;
height: 150px;
background: #fff;
position: fixed;
top: 50%;
left: 50%;
transform: translate3d(-50%, -50%, 0)
}
</style>
- 先想一下思路:頁面上一個button 點擊彈出彈框,因為vue是數(shù)據(jù)驅動的視圖,所以需要需要定義一個flag變量,如果flag = ture 那么彈出
- 彈框出現(xiàn)后,目前是在子組件內(nèi),所以需要$emit() 一個關閉事件把flag變?yōu)閒alse從而關閉彈框
<body>
<div id="app">
<button @click="flag=true">彈</button>
<modal :show="flag" @close="()=>flag=false"></modal>
</div>
<template id="dialog">
<div class="mask" v-show="show">
<div class="dialog">
<button @click="dialogClose">關閉</button>
</div>
</div>
</template>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
let modal = {
props:['show'],
template:'#dialog',
methods:{
dialogClose(){
this.$emit('close')
}
}
}
let vm = new Vue({
el:'#app',
data:{
flag:false
},
components:{
modal
}
})
</script>
</body>
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。