javascript - angularjs ui-router 父頁(yè)面的數(shù)據(jù)變動(dòng)如何通知子頁(yè)面
問(wèn)題描述
父頁(yè)面嵌套子頁(yè)面(ui-view 里面也有ui-view)
子頁(yè)面是用component來(lái)寫的,所以繼承不了父頁(yè)面的scope
現(xiàn)在父給子傳數(shù)據(jù)是通過(guò)傳參實(shí)現(xiàn)的 $state.go(’parent.child’, {data: $scope.data})
但如果父的數(shù)據(jù)修改了,那么子頁(yè)面是不知道的,還是原來(lái)那樣。
請(qǐng)問(wèn)有什么方法可以讓父頁(yè)面的數(shù)據(jù)修改通知到子頁(yè)面,或者別的傳參方式?
問(wèn)題解答
回答1:父scope$broadcast子頁(yè)面可以收到,子頁(yè)面scope$emit父頁(yè)面可以收
回答2:這種應(yīng)該算頁(yè)面組件間的數(shù)據(jù)共享問(wèn)題吧,我能想到的解決方法有以下幾種:
借用 angular 內(nèi)部的事件機(jī)制,子頁(yè)面訂閱父頁(yè)面發(fā)布的事件來(lái)進(jìn)行一些變動(dòng),反之也是。
實(shí)現(xiàn)一個(gè)公用的service來(lái)儲(chǔ)存共享數(shù)據(jù),分別在兩個(gè)頁(yè)面的組件中注入
使用第三方的狀態(tài)托管容器,比如大名鼎鼎的redux,使用ng-redux做適配,兩個(gè)頁(yè)面通過(guò)調(diào)用action來(lái)改變狀態(tài)容器儲(chǔ)存的狀態(tài)
相關(guān)文章:
1. windows誤人子弟啊2. 冒昧問(wèn)一下,我這php代碼哪里出錯(cuò)了???3. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)4. python - linux怎么在每天的凌晨2點(diǎn)執(zhí)行一次這個(gè)log.py文件5. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過(guò)程真的是個(gè)坑!求助下面的存儲(chǔ)過(guò)程哪里錯(cuò)啦,實(shí)在是找不到哪里的問(wèn)題了。6. 實(shí)現(xiàn)bing搜索工具urlAPI提交7. mysql優(yōu)化 - MySQL如何為配置表建立索引?8. 如何用筆記本上的apache做微信開(kāi)發(fā)的服務(wù)器9. 我在網(wǎng)址中輸入localhost/abc.php顯示的是not found是為什么呢?10. 關(guān)于mysql聯(lián)合查詢一對(duì)多的顯示結(jié)果問(wèn)題
