【发布时间】:2016-03-20 16:02:48
【问题描述】:
如果用户未登录(使用我的自定义 loginProvider 进行检查),我正在 run 部分中收听 $stateChangeStart 以重定向到登录页面。
如果用户未登录,导航到 /#/home 成功将 url 更改为 /#/login...虽然这不会重新加载页面,因此仍然允许用户访问主页哈哈。
那么,如何重新加载路线?
angular.module("app", [
"app",
"ui.router"
])
.config(["$stateProvider", "$urlRouterProvider", "$httpProvider", function ($stateProvider, $urlRouterProvider, $httpProvider) {
$stateProvider
.state("login", {
url: "/login",
templateUrl: "app/login/login.html",
controller: "loginController",
authenticate: false
})
.state("home", {
url: "/home",
templateUrl: "app/home/home.html",
controller: "homeController",
authenticate: true
});
$urlRouterProvider.otherwise("login");
}])
.run(["$rootScope", "$state", "loginProvider", function ($rootScope, $state, loginProvider) {
$rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) {
if (toState.authenticate && !loginProvider.isLoggedIn()) {
$state.transitionTo("login");
$state.reload(); // not working
$state.go("login", {}, {reload: true}); // not working
}
});
}]);
我正在使用 angular 版本 1.5.1 和 angular-ui-router 版本 0.2.18。
【问题讨论】:
-
是否显示任何错误?
-
@Sandeep 没有错误,只是导航到
/#/home将 url 更改为/#/login... 但无论如何都会显示主页。我希望它导航到并重新加载登录页面。 -
看我的回答可能对你有帮助
标签: angularjs angular-ui-router