国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

angular.js - angular $scope.$on 接收事件重復(fù)執(zhí)行
給我你的懷抱
給我你的懷抱 2017-05-15 17:05:58
0
1
1084

angular controller 之間通過(guò)事件傳遞值

頁(yè)面每次刷新路由都會(huì)對(duì)視圖 ui-view 進(jìn)行刷新,

綁定在內(nèi)的控制器

angular.controller('listCtrl',[])

會(huì)進(jìn)行重載,(因?yàn)槲野?listCtrl 控制器綁定到了視圖內(nèi)的標(biāo)簽上)

controller 內(nèi)的

$scope.$on('testData',function(ev,data){
 //
})

會(huì)記錄 listCtrl 重載的次數(shù),等接收到 testData 事件的時(shí)候,$on 會(huì)重復(fù)執(zhí)行相應(yīng)的次數(shù)。

我只想讓 testData 執(zhí)行一次,應(yīng)該怎么做

給我你的懷抱
給我你的懷抱

全部回復(fù)(1)
曾經(jīng)蠟筆沒(méi)有小新

謝邀, 寫(xiě)一個(gè) service 或在 $rootScope 上掛一個(gè)全局變量

if(!$rootScope.isInvoked) {
    var unbindHandler = $scope.$on('testData', function(evt, data) {
        //執(zhí)行完成后就把該事件解綁 
        unbindHandler();
        $rootScope.isInvoked = true;
    });
}

當(dāng)然,關(guān)于事件訂閱與發(fā)送這塊如果不是像路由這種需要通知所有scope的情況,建議不要使用AngularJS自帶的事件機(jī)制,建議自己寫(xiě)一個(gè)EventBus服務(wù)去處理。因?yàn)锳ngularJS的事件機(jī)制需要遍歷整個(gè)scope樹(shù),性能一般。

推薦一篇我們團(tuán)隊(duì)內(nèi)部的總結(jié):
https://github.com/ShuyunXIAN...

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板