我想在$ 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')继续运行
答案 0 :(得分:2)
也许您需要取消注册:
myService.setAlert = function(message){
myService.alert = message;
var deregister = rootScope.$on('$routeChangeSuccess', function() {
myService.broadcastAlert();
deregister();
});
};