我知道Angular没有catchall控制器。 E.g:
$routeProvider.otherwise({
controller: 'CatchAllCtrl'
});
但是,如果$ routeProvider.otherwise被触发,有没有办法调用一些代码,所以我至少可以知道否则被调用以及路由是什么?
答案 0 :(得分:2)
您可以重定向到一个可以执行“其他”逻辑的catchcall路由,然后手动重定向到应用中的实际视图。
$routeProvider
.when('/', {
templateUrl: '/partials/index.html',
controller: 'homeController'
})
.when('/otherwise', {
controller: 'otherwiseController'
})
.otherwise({redirectTo: '/otherwise' });
在您的otherwiseController中,您可以注入$ location,然后设置$location.path("/")
以重定向到您想去的任何位置。
你可能需要为/ otherwise路由指定templateUrl(我不确定)。
答案 1 :(得分:1)
您可以收听路由更改并在回调中执行所需的操作。
$rootScope.$on('$routeChangeSuccess', function() {
var path = $location.path();
// this shoudl fire for all routes
}):
答案 2 :(得分:0)
这里有一个角色的新手,所以用盐来取一些东西:)
难道你不能简单地将你想要执行的代码放在“CatchAllCtrl”中“否则”吗?
或者,您可以在“否则”到达时更新控制变量并使用$scope.watch
来捕捉它的变化
How do I use $scope.$watch and $scope.$apply in AngularJS?