在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ vue中父子組件交互問(wèn)題

vue中父子組件交互問(wèn)題

問(wèn)題描述

有這樣一個(gè)簡(jiǎn)單的需求: 頁(yè)面有一個(gè)按鈕, 點(diǎn)擊會(huì)有一個(gè)彈窗, 彈窗上有個(gè)關(guān)閉按鈕, 點(diǎn)擊可以關(guān)閉這個(gè)彈窗

vue的組件來(lái)做大約是這樣的

<component-parent>
    <component-child>
        ....我是內(nèi)容....
        <button>點(diǎn)我關(guān)閉</button>
    </component-child>
    
    <button>點(diǎn)我打開(kāi)</button>
</component-parent>

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

我的實(shí)現(xiàn)方式是這樣的:
  • 打開(kāi)操作(父組件操作):

    show(){
        this.isShow = true
        .....做其他的事情....
    }
    hide(){
        this.isShow = false
    }
  • 關(guān)閉操作(子組件操作):

       this.$parent.hide()

這樣做能實(shí)現(xiàn)功能, 但是就是不太優(yōu)雅, 因?yàn)檫@樣父組件必須實(shí)現(xiàn)子組件調(diào)用的方法/屬性, 耦合會(huì)很高

emit我也想過(guò), 但我覺(jué)得這樣更不好

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

希望能找到一個(gè)最優(yōu)解, 只在子組件里面做操作, 不依賴父組件, 謝謝!

回答
編輯回答
傻叼

<component-child @cancel=cancel></component-child>
父組件中定義cancel函數(shù)

2017年2月24日 19:40
編輯回答
風(fēng)畔

sync 修飾符了解一下。

<component-child :visible.sync="isShow"></component-child>
// 子組件內(nèi)的關(guān)閉方法
handleClose() {
   this.$emit('update:visible', false);
}
2017年4月25日 23:33
編輯回答
淚染裳

你需要有個(gè)一個(gè)popupWindowManager的類來(lái)管理所有彈窗。。。

父組件調(diào)用這個(gè)

popupWindowManager.popup(彈窗組件,closeHandler)
2018年6月28日 07:31
編輯回答
玄鳥(niǎo)

可以在子組件里面寫(xiě)入?yún)?shù)isShow 去控制子組件的方法,然后用$emit把它傳輸出來(lái),這樣就不會(huì)依賴于父組件的參數(shù),一般封裝組件都是這樣寫(xiě)

2018年1月19日 01:24