我正在使用routeSegment模块使用AngularJS编写应用程序。在我的应用程序中,我有以下结构:
.segment('index', {
templateUrl: 'assets/templates/index.html',
controller: MainCtrl,
dependencies: ['index'],
resolve: ['isUserLoggedIn'],
resolveFailed: {
templateUrl: 'assets/templates/login.html',
controller: LoginCtrl
}
})
如果用户未登录,则会将其重定向到登录页面。问题是,一旦他们登录,我就会拨打$location.path('/index');
,但resolveFailed
仍然有效。有没有办法在登录时强制刷新路由?
答案 0 :(得分:1)
您是否尝试过使用重装功能?
$routeSegment.chain[0].reload();
答案 1 :(得分:1)
我遇到了同样的问题。
resolveFailed
是在解决失败时使用的备用段定义。
我设法以这种方式工作:
var login = {
controller: 'LoginCtrl',
templateUrl: 'login.html',
resolve: {
'isUserNotLoggedIn': function($q) {
var defer = $q.defer();
if (localStorage.hasOwnProperty("loggedIn")) {
defer.reject();
} else {
defer.resolve();
}
return defer.promise;
}
}
};
var main = {
controller: 'MainCtrl',
templateUrl: 'main.html',
resolve: {
'isUserLoggedIn': function($q) {
var defer = $q.defer();
if (localStorage.hasOwnProperty("loggedIn")) {
defer.resolve();
} else {
defer.reject();
}
return defer.promise;
}
},
/* if user is not loggedin then go to login page */
resolveFailed: login
};
/* if user is loggedin then go to login page */
login.resolveFailed = main;
.segment('index', main)
我在https://github.com/artch/angular-route-segment/issues/23上看到你用它来整理整个页面。
我还注意到,即使父段解析失败,子段仍会尝试加载。