我已经配置了一些所有用户在登录之前都可以使用的基本路由:
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 的第一个实例。
Q:以后有办法注册路由吗?
将路由和模板动态添加到 $routeProvider 的解决方案可能有效,但非常难看(涉及全局变量nastyGlobalReferenceToRouteProvider
)。