javascript - angularjs ui-router 父頁面的數(shù)據(jù)變動(dòng)如何通知子頁面
問題描述
父頁面嵌套子頁面(ui-view 里面也有ui-view)
子頁面是用component來寫的,所以繼承不了父頁面的scope
現(xiàn)在父給子傳數(shù)據(jù)是通過傳參實(shí)現(xiàn)的 $state.go(’parent.child’, {data: $scope.data})
但如果父的數(shù)據(jù)修改了,那么子頁面是不知道的,還是原來那樣。
請(qǐng)問有什么方法可以讓父頁面的數(shù)據(jù)修改通知到子頁面,或者別的傳參方式?
問題解答
回答1:父scope$broadcast子頁面可以收到,子頁面scope$emit父頁面可以收
回答2:這種應(yīng)該算頁面組件間的數(shù)據(jù)共享問題吧,我能想到的解決方法有以下幾種:
借用 angular 內(nèi)部的事件機(jī)制,子頁面訂閱父頁面發(fā)布的事件來進(jìn)行一些變動(dòng),反之也是。
實(shí)現(xiàn)一個(gè)公用的service來儲(chǔ)存共享數(shù)據(jù),分別在兩個(gè)頁面的組件中注入
使用第三方的狀態(tài)托管容器,比如大名鼎鼎的redux,使用ng-redux做適配,兩個(gè)頁面通過調(diào)用action來改變狀態(tài)容器儲(chǔ)存的狀態(tài)
相關(guān)文章:
1. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?2. mysql - 怎么生成這個(gè)sql表?3. mysql儲(chǔ)存json錯(cuò)誤4. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法5. mysql - 表名稱前綴到底有啥用?6. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?7. 編輯成功不顯示彈窗8. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。9. mysql - 數(shù)據(jù)庫表中,兩個(gè)表互為外鍵參考如何解決10. sql語句 - 如何在mysql中批量添加用戶?
