angular.js - angular $scope.$on 接收事件重複執行
给我你的怀抱
给我你的怀抱 2017-05-15 17:05:58
0
1
995

angular controller 之間透過事件傳遞值

頁面每次刷新路由都會對視圖 ui-view 進行刷新,

綁定在內的控制器

angular.controller('listCtrl',[])

會進行重載,(因為我把 listCtrl 控制器綁定到了視圖內的標籤上)

controller 內的

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

會記錄 listCtrl 重載的次數,等接收到 testData 事件的時候,$on 會重複執行對應的次數。

我只想讓 testData 執行一次,我應該怎麼做

给我你的怀抱
给我你的怀抱

全部回覆(1)
曾经蜡笔没有小新

謝邀, 寫一個 service 或在 $rootScope 上掛一個全域變數

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

當然,關於事件訂閱與發送這塊如果不是像路由這種需要通知所有scope的情況,建議不要使用AngularJS自帶的事件機制,建議自己寫一個EventBus服務去處理。因為AngularJS的事件機制需要遍歷整個scope樹,所以性能一般。

推薦一篇我們團隊內部的總結:
https://github.com/ShuyunXIAN...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板