javascript - vue中元件劃分與組合使用問題
漂亮男人
漂亮男人 2017-05-19 10:37:17
0
1
579

初學Vue,目前做個小練習,有一個grid元件和dialog元件。 gird中每行有個刪除按鈕,點選後彈跳視窗提醒是否刪除。 gird元件如下圖:

dialog元件下圖:

#在App.vue中建立vue實例,引入grid元件,現在不知道dialog是應該在App.vue中引入,還是在gird中引入。如果在grid中引入,grid不是就跟dialog耦合度太深了麼。如果在App中引入dialog,控制dialog是否顯示都得在App中來,但感覺關閉dialog應該是由dialog來控制的。
我目前的做法是在App.vue中分別引入了gird和dialog,當點擊刪除按鈕,gird中emit一個事件,在App監聽該事件,並修改控制dialog是否顯示的值為true。當點擊了dialog關閉按鈕,emit一個事件,App中監聽該事件,修改控制dialog是否顯示的值為false。感覺不該這樣來處理啊。
請各位前輩指導一下,怎麼劃分和組合使用組件更好。謝謝各位!

漂亮男人
漂亮男人

全部回覆(1)
習慣沉默

使用 v-model 將 dialog '偽裝'成 input ,實作父子雙向資料流

子組件:

<template>
    <p v-if="value">
        <a href="javascript:;" @click="close">关闭</a>
    </p>
</template>
<script>
export default {
    props:{
        value:{
            type:Boolean,
            default:false
        }
    },
    data() {
        return {
            isShow: this.value
        }
    },

    methods: {
        close() {
            this.isShow = false
            this.$emit("input", this.isShow)
        }
    }
}
</script>

父:

<Child v-model="showDialog"></Child>
data:{
    showDialog:false
}

這樣,父級改變 showDialog 可實現隱藏/顯示,而子元件呼叫 close 也會更新 showDialog 的值

官方文件 https://cn.vuejs.org/v2/guide...使用自訂事件的表單輸入元件

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板