在用户登录之前,我已经配置了一些基本路由,这些路由对所有用户都可用:
App.config(function ($routeProvider) {
$routeProvider.
when('/login', { templateUrl: 'views/login.html', controller: PageStartCtrl.Controller }).
otherwise({ redirectTo: '/login' });
});
所以用户唯一能做的就是登录。用户登录后,我想注册额外的路由,例如:
$http
.post('api/Users/Login', { User: userName, Password: userPassword })
.success(function (response : any) {
App.config(function ($routeProvider) {
$routeProvider
.when('/dashboard',
{ templateUrl: 'part/dashboard.html',
controller: DashboardCtrl.Controller });
});
然而,我认为我应该只调用.config方法一次,因为$routeProvider是全新的实例,对/login路由一无所知。进一步的调试表明,在解析视图更改时使用了$resourceProvider的第一个实例。
问:有没有办法稍后注册路由?
来自Add routes and templates dynamically to $routeProvider的解决方案可能有效,但相当丑陋(包含全局变量nastyGlobalReferenceToRouteProvider)。
{ templateUrl: .., controller: 'myController'}
,而不是{... controller : myController }
),因为在路由设置期间,控制器尚未加载,因此myController
未定义。 - stej