我試過在類似的問題中搜索我的答案,但沒有成功。JS(angular)::無法讀取undefined的屬性
我正在嘗試使用Angular/PhP/MySQL創建我的第一個登錄頁面。有一些偉大的文章幫助了我很多,並最終讓它開始工作。艾爾強硬它的工作仍然有1錯誤的控制檯,我想不出。
控制檯SS:(注意我試圖去家頁時打印變量,看看是分配的控制檯日誌)
它甚至指出,我需要看, 'application.controller.js'在第8行。我打印出第9行的console.log,這給了我一個很好的結果(在控制檯上面顯示),所以這是我困惑的地方。
這裏是我的application.controller(部分):
app.run(function ($location, AUTH_EVENTS, AuthService) {
$rootScope.$on('$routeChangeStart', function (event, next) {
var authorizedRoles = next.data.authorizedRoles; <<< LINE 8
console.log(authorizedRoles);
if (!AuthService.isAuthorized(authorizedRoles)) {
event.preventDefault();
if (AuthService.isAuthenticated()) {
$location.path("/login");
} else {
$location.path("/login");
}
};
});
});
'next.data.authorizedRoles' 點到我的路由文件看起來像:
app.config(function ($routeProvider, USER_ROLES) {
$routeProvider
.when('/', {
templateUrl: 'views/home-page-display.php',
data: {
authorizedRoles: [USER_ROLES.admin, USER_ROLES.editor, USER_ROLES.guest]
}
})
.when('/login', {
templateUrl: 'views/login.php'
})
.otherwise({
redirectTo: '/login'
});
});
這裏是我廠的一部分如需要認證:
authService.isAuthenticated = function() {
return !!Session.userId;
};
authService.isAuthorized = function (authorizedRoles) {
if (!angular.isArray(authorizedRoles)) {
authorizedRoles = [authorizedRoles];
}
return (authService.isAuthenticated() && authorizedRoles.indexOf(Session.userRole) !== -1);
};
T他登錄作品,將重定向到我的主頁,但我無法擺脫這個錯誤。由於我的console.log()顯示正確的用戶角色,我開始認爲問題在於別處。
我懷疑'$ routeChangeStart'被激發兩次。該屬性是第一次存在,但不是第二次。 – cgTag
它似乎只在頁面上做,我沒有在我的路由中分配任何'authorizedRoles'。由於登錄頁面是唯一的情況,我應該改變$ routeChangestart函數,所以它只會檢查是否'/ login'或其他。 –