iT邦幫忙

0

請教vue問題

想請教一下該如何讓master page接收到content page觸發控制項事件的訊息呢?
目前只有切換頁面時maste page update可接收到觸發事件,但是控制項不知道該如何做起..請各位多指教
/images/emoticon/emoticon13.gif

1 個回答

3
Homura
iT邦高手 1 級 ‧ 2018-08-28 17:34:12

你可以在根Vue物件建立共用的變數
然後任一組件呼叫他

this.$root.data名稱

或是使用Vuex來管理App狀態
https://vuex.vuejs.org/zh/

看更多先前的回應...收起先前的回應...
untitled iT邦新手 5 級 ‧ 2018-08-28 17:46:38 檢舉

其實我是這樣做沒錯,但是回歸到最初的問題點是,若contentpage有10~20個時我是不是都得加入這個共用變數來記錄,我想在masterpage時,當contentpage任一控制項按下之後,我想直接透過masterpage就可以收到controls event ..>_<這樣就可以不用去維護這麼多頁面了

Homura iT邦高手 1 級 ‧ 2018-08-28 17:48:40 檢舉

untitled
你如果到那麼大量當然是用Vuex會比較好@@

fysh711426 iT邦研究生 4 級 ‧ 2018-08-29 01:44:27 檢舉

Homura 大大想問一下,
感覺 Vue 的父子組件並不像 ng1 的 $scope 有繼承概念,
因此 contentpage 無法直接綁定(觸發) masterpage 的 data 或 methods,
而使用 Vuex 這點還是不變,必需透過 this.$root 或 this.$emit() 等方式間接觸發,
所以各 contentpage 還是需要維護自己觸發父層的 data 或 methods,
不過核心邏輯是可以放在 masterpage 統一管理。
不知道我有沒有理解錯誤。 /images/emoticon/emoticon19.gif

Homura iT邦高手 1 級 ‧ 2018-08-29 09:44:55 檢舉

fysh711426
Vue也有父組件傳值給子組件的方式唷
https://jeremysu0131.github.io/Vue-js-%E7%88%B6%E5%AD%90%E7%B5%84%E4%BB%B6%E6%BA%9D%E9%80%9A-Props/
Vuex我也沒就玩過,不過看介紹跟你說的方法類似沒錯

fysh711426 iT邦研究生 4 級 ‧ 2018-08-29 12:55:10 檢舉

props 可以將父組件的值傳入子組件,類似 ng2 的 @input,
資料由根節點往子節點流動,也就是單向數據流,
不過父子組件的作用域還是分開的,而 ng1 更像是子層完全繼承父層,
子層可以直接修改父層的資料,ng1 這點好像可以達到本篇的需求,
不過這樣雖然方便,但資料流是交錯的,
在大型專案反而不好維護,無法預測資料的變化。

對 Vuex 蠻有興趣的,感謝大大的資料。 /images/emoticon/emoticon37.gif

Homura iT邦高手 1 級 ‧ 2018-08-29 14:16:27 檢舉

fysh711426
其實單向好像會比較好
我之前玩React時也是這樣設計得
Vue官方文件有寫一些Vue比ng1更好得原因
https://cn.vuejs.org/v2/guide/comparison.html#AngularJS-Angular-1

fysh711426 iT邦研究生 4 級 ‧ 2018-08-29 18:20:47 檢舉

恩單向比較好,Vue、React、Angular 的組件樹都是設計成單向的,
下個專案想用 Vue 試試看,目前都只看了理論,還沒有實戰過。
/images/emoticon/emoticon16.gif

untitled iT邦新手 5 級 ‧ 2018-09-07 16:51:48 檢舉

感謝各位大大的經驗
/images/emoticon/emoticon02.gif

我要發表回答

立即登入回答