vue彈窗

[v-cloak]{display: none;}
.mask{
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background-color: rgba(0,0,0,.25);
}
.dialog{
    width: 400px;
    height: 200px;
    position: fixed;
    top: 50%;
    left: 50%;
    background-color: #fff;
    transform: translate3d(-50%,-50%,0);
}
 1 <div id="app" v-cloak>
 2     <button @click="flag=true"></button>
 3     <!--若是:show的值是true則顯示,若是是false則隱藏(加:號show就是布爾類型),@close對應的函數是點擊關閉按鈕時觸發的函數-->
 4     <modal :showw="flag" @close="()=>flag=false"></modal><!--val=>flag=false,一點就是爲了觸發這個函數,這個函數的目的就是讓flag變爲false,因此不寫傳參也能夠-->
 5     <!--<modal :show="flag" @close="guanbi"></modal>-->
 6 </div>
 7 <template id="dialog">
 8     <div class="mask" v-show="showw">
 9         <div class="dialog">
10             <button @click="shutdown">關閉</button><!--觸發子的shutdown方法-->
11         </div>
12     </div>
13     <!--寫在這裏都轉成文檔碎片了,不會在頁面顯示出來-->
14 </template>
 1 let modal = {
 2     props:['showw'],//接收了父組件的屬性
 3     template:`#dialog`,//像嵌套,等於把id裏的元素都放在這裏了
 4     methods:{//子傳父
 5         shutdown(){
 6             this.$emit('close');//被觸發後找到父的close方法並執行,發佈 emit,子發佈這個函數,讓父去執行
 7         }
 8     }
 9 };
10 let vm = new Vue({
11     el:'#app',
12     data:{  //放數據
13         flag:false  //默認是關閉
14     },
15     components:{
16         modal,  //名字不能叫dialog,原生中已經佔用了這個名字
17     },
18 //  methods:{
19 //      guanbi(){
20 //         this.flag=false;
21 //      }
22 //  },
23 });
相關文章
相關標籤/搜索