鍍金池/ 問答/HTML/ 非父子關系組件交互,如果監(jiān)聽(過濾)事件源?

非父子關系組件交互,如果監(jiān)聽(過濾)事件源?

頁面組件關系分布如下:
圖片描述

該功能主要控制top-bar-component菜單組件(該組件上有二級菜單,未畫出)的顯示或隱藏效果,要求如下:

  1. 點擊組件top-bar-component里面的按鈕控制 right-sider-component組件顯示隱藏(toggle 效果);
  2. 點擊right-sider-component上的菜單按鈕,導航到指定路由,并隱藏該組件,點擊該組件其他區(qū)域,不能隱藏該組件;
  3. 點擊頁面其他區(qū)域,均隱藏該組件。

我的實現方式:通過非父子組件交流方式,穿件一個 eventHub.js,在外層 layout 監(jiān)聽click事件,當點擊后 emit一個事件出去,然后在 菜單組件頁面監(jiān)聽該事件,基本可以實現這種效果了,但是有一點沒法做到:

就是點擊right-sider-component非菜單區(qū)域的時候,該組件也隱藏了, 我該如何去分top-bar-component組件的“非菜單區(qū)域”和“非組件區(qū)域(頁面其他區(qū)域)”呢?

回答
編輯回答
我不懂

換個思路right-sider-component出現的時候有一層遮罩(可透明也可不透明,視UI而定)
right-sider-component和top-bar-component浮在遮罩上面
點擊遮罩和點擊right-sider的菜單,right-sider隱藏
點擊點擊top的button toggle

這樣就好處理很多了

2017年6月7日 01:38