$ location.path()更改后,在另一个ng-view中触发事件

时间:2013-11-14 10:25:26

标签: javascript angularjs

我想在$ location.path()更改ng-view之后在另一个视图中触发警报(不使用$ rootScope)。

在我的控制器触发事件​​中,我有:

$location.path('/');
myService.setAlert("My alert");

我的服务传递“消息”和$广播事件

myService.broadcastAlert = function(){
  $rootScope.$broadcast('alertChanged');
};

myService.setAlert = function(message){
  myService.alert = message;
  rootScope.$on('$routeChangeSuccess', function() {
    myService.broadcastAlert();
  });
}

我的其他视图的控制器收到警告

$scope.$on('alertChanged', function(){
  console.log("New Alert is triggered");
});

这里的问题是rootScope。$ on('$ routeChangeSuccess')继续运行

1 个答案:

答案 0 :(得分:2)

也许您需要取消注册:

myService.setAlert = function(message){
  myService.alert = message;
  var deregister = rootScope.$on('$routeChangeSuccess', function() {
    myService.broadcastAlert();
    deregister();
  });
};