所以我有一个 AngularJS 服务来监听一些事件。在处理这些事件时,我需要调用不同的控制器并最终加载一个新视图。在一个事件处理程序中,我使用 $location.path() 然后调用 $rootScope.apply() 来触发到控制器的路由。这适用于该事件,但在其他事件中我收到以下错误:$rootScope:inprog Action Already In Progress
. 我猜它在第一种情况下有效,因为 $rootScope.apply() 是从侦听器函数内的另一个回调函数调用的,而其他处理程序试图仅从事件侦听器函数调用它。
//angular service
$rootScope.$on('MY_EVENT', function (event, msg) {
MyClass.doSomething(msg, function (response) {
$location.path("/view1");
$rootScope.$apply(); //WORKS FINE
});
});
$rootScope.$on('MY_OTHER_EVENT', function (event, msg) {
$location.path("/view2");
$rootScope.$apply(); //ERROR
});
如何让它适用于所有事件处理程序?