javascript - Angular利用 broadcast和 on實(shí)現(xiàn)頁面跳轉(zhuǎn)并且傳遞數(shù)據(jù) 但是跳轉(zhuǎn)后收不到數(shù)據(jù)
問題描述
我利用Angular中$broadcast和$on實(shí)現(xiàn)頁面跳轉(zhuǎn)并且傳遞數(shù)據(jù),但是跳轉(zhuǎn)后收不到數(shù)據(jù)(再次點(diǎn)擊按鈕才會顯示)具體要求:點(diǎn)擊第一個(gè)頁面的按鈕,傳遞一個(gè)數(shù)組(如下圖中的shopList數(shù)組)到第二個(gè)頁面,使得第二個(gè)頁面能夠接收到shopList數(shù)組
第一個(gè)頁面
<a ui-sref='app.checkOut' ng-click='checkoutShop(shopList)'><b>結(jié)算</b></a>
對應(yīng)的controller(是主控制器-父級)
$rootScope.checkoutShop=function(shop){ var shop_list_data = shop; console.log(shop_list_data); $rootScope.$broadcast(’to_checkout’, shop_list_data);};
第二個(gè)頁面的controller(是主控制器下的子集)
$scope.$on(’to_checkout’, function(event,data) { console.log(data);});
但是測試后發(fā)現(xiàn)第二個(gè)頁面的console.log(data)打印失敗,但是再次點(diǎn)擊又會成功,是路由的問題嗎?具體如下:主頁面如下,購物車是隱藏在側(cè)面的,點(diǎn)擊導(dǎo)航欄中的購物車,右側(cè)會出現(xiàn)購物車
剛開始:
點(diǎn)擊按鈕后,傳遞數(shù)組并且跳轉(zhuǎn)到另外一個(gè)頁面,但是并沒有打印這個(gè)數(shù)組:
再次點(diǎn)擊“結(jié)算”按鈕,就會打印了:
請問這是什么原因?該如何解決呢?
問題解答
回答1:去掉 ui-sref='app.checkOut' ,方法里先執(zhí)行$broadcast ,再路由跳轉(zhuǎn)。
<a ng-click='checkoutShop(shopList)'><b>結(jié)算</b></a>$rootScope.checkoutShop=function(shop){ var shop_list_data = shop; console.log(shop_list_data); $rootScope.$broadcast(’to_checkout’, shop_list_data); $state.go(’app.checkOut’);};回答2:
為什么要在rootScope下添加點(diǎn)擊事件?直接添加在頁面的scope看看。
回答3:$state.go 跳轉(zhuǎn)頁面的時(shí)候可以直接傳遞參數(shù),為什么還要用$broadcast
主控制器-父級
`$rootScope.checkoutShop=function(shop){ var shop_list_data = shop; console.log(shop_list_data); $state.go(app.checkOut,{data:shop_list_data});};`
主控制器下的子集
.controller(’XXXX’, [’$rootScope’, ’$scope’, ’$stateParams’, function($rootScope, $scope, $stateParams) {console.log($stateParams.data); }])
相關(guān)文章:
1. macos - mac 重啟后 XAMPP下的apache無法啟動(dòng)2. css3 - 這個(gè)右下角折角用css怎么畫出來?3. mysql - eclispe無法打開數(shù)據(jù)庫連接4. windows2003下的apache響應(yīng)時(shí)間特別長?5. javascript - 在 model里定義的 引用表模型時(shí),model為undefined。6. 關(guān)于Java引用傳遞的一個(gè)困惑?7. java - 根據(jù)月份查詢多個(gè)表里的內(nèi)容怎么實(shí)現(xiàn)好?8. javascript - 一個(gè)關(guān)于客戶端和前端通信的疑惑?9. php - 一個(gè)操作請求多個(gè)服務(wù)如何保證數(shù)據(jù)的安全?10. javascript - webpack熱加載配置不生效
