我记得读过如何确保角度不会在最终渲染之前预加载{{}}和其他各种位数几毫秒的指南,但我无法将其挖掘出来。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
您可以使用ui-route的$ stateChangeStart事件来检查用户是否尝试进入需要身份验证的状态。您需要在应用的运行阶段收听该事件,您可以查看以下内容。
angular.module("yourApp").run(function($rootScope, $state){
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
if(toState === "yourStateWhichRequiresAuthentication" && authenticationFailed){
event.preventDefault();
$state.go("loginState");
} }) });
更好的是,您可以向状态添加数据并定义哪些状态需要身份验证,并使用该数据值检查toState是否需要身份验证,如下所示:
//Data Definition in your state definition
$stateProvider
.state("main", {
url: "main",
template: "<div>Main State</div>",
data: {needsAuthentication: true})
if (toState.data && toState.data.needsAuthentication) {
if (!$rootScope.isAuthenticated()) { // user is not logged in
event.preventDefault();
$state.go("login");
}
}