无法刷新页面上的相同状态
问题描述:
我已经创建了SPA angular angular v1.5.6 and angular-ui-router v1.0.0alpha0;这是我的Working Plunker
。 这个SPA我有3页:着陆页,即“/”,/首页和/关于。主页需要登录;登录后我们将凭据保存在本地存储中,以便刷新页面时不会丢失页面。一切工作正常,但现在我有问题的/主页页无法刷新页面上的相同状态
当我刷新/主页页面,它提供了以下错误这是在数据中定义的属性的.STATE和属性页不加载
angular.min.js:117 TypeError: Cannot read property 'authorizedRoles' of undefined
路线在下面的方式(下面只示出了相关的代码)
$stateProvider
.state("home", {
url: '/home',
templateUrl: './home/home.html',
controller: 'HomeController',
requiresAuth: true,
data : { pageTitle : 'Home', authorizedRoles: [USER_ROLES.admin, USER_ROLES.editor] }
})
定义
和*.config*
这是错误的原因
$transitionsProvider.onBefore({to: function(state) { return state.requiresAuth; } },
function($transition$, $state, AuthService) {
console.log(arguments);
var from = $transition$.to().name;
console.log(from);
if(!AuthService.isAuthenticated()) {
return $state.go("login", {referral : from});
} else {
console.log('I m logged in');
var roles = $state.current.data.authorizedRoles;
if(AuthService.isAuthorized(roles)) {
console.log('Authorized');
}
}
});
笔记使用下面的代码:要求登录时写在plunker任何凭据。
页面刷新后$ state.current变为空白;如何处理这个situtaions?
答
var roles = $state.current.data.authorizedRoles;
解决将是
var roles = $transition$.to().data.authorizedRoles;
答
您是否试过dev tool
?
把一个断点放在app.js:76
并点击Home
,你会看到你的当前状态是没有data
属性的基态。
是。我发现这似乎有效,但当我们刷新同一主页时,为什么会发生这种情况 –