我正在使用broadcast和$ scope。$ on,但$ scope。$中的方法执行多次。 这是我的代码。 在控制器中:
$scope.selectItem = function(index, item){
BaseService.hideView();
},
$scope.$on("closeView",function(){
$log.debug("InsideOn: calling hideViewedItem");
$scope.hideViewedItem();
});
在BaseService中:
app.factory('BaseService', function ($rootScope, $log, $location) {
return {
hideView :function(){
$log.debug("calling closeView");
$rootScope.$broadcast("closeView", 1);
}
}
});
这里调用hideView一次,但hideViewedItem调用3次。在控制台中我收到这些消息。
calling closeview
InsideOn: calling hideViewedItem
InsideOn: calling hideViewedItem
InsideOn: calling hideViewedItem
如何只打一次这个电话?