我试图阻止访问某些路由,我使用ui-router并将数据附加到我的状态对象,但在某些情况下,运行方法会重新启动异常" undefined requireLogin"
下面是我的代码
angular.module('app', [
'app.user' ])
.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/login');
$stateProvider
.state('app', {
abstract: true,
templateUrl: 'app/main/views/app.html',
data: {
requireLogin: true
}
})
// HOME
.state('app.home', {
title: 'Home',
url: '/home',
templateUrl: 'app/main/views/home.html',
controllers: ['mainController.js'],
})
})
.run(['$rootScope', '$location',
function ($rootScope, $location) {
$rootScope.location = $location;
$rootScope.$on('$stateChangeSuccess', function (event, current) {
var requireLogin = current.data.requireLogin;
if (requireLogin) {
event.preventDefault();
$rootScope.location.path('/login');
}
});
}]);
这是我的用户模块
angular.module('app.user', [])
.config(['$stateProvider', function ($stateProvider) {
var moduleUrl = 'app/modules/user/';
var moduleTemplate = 'app/main/views/app.html';
var moduleName = 'app.user';
$stateProvider
.state('user', {
abstract: true,
data: {
requireLogin: true,
},
url: '/user',
templateUrl: moduleTemplate,
resolve: scriptUtils.getResolved(moduleName, [moduleUrl + 'services/userService.js'])
})
.state('user.accueil', {
title: 'user',
url: '/accueil',
templateUrl: moduleUrl + 'views/accueil.html',
controller: 'userController',
resolve: scriptUtils.getResolved(moduleName,
[
moduleUrl + 'controllers/userController.js'
])
})
.state('user.add', {
title: 'user',
url: '/add',
templateUrl: moduleUrl + 'views/add.html',
controller: 'userController',
resolve: scriptUtils.getResolved(moduleName,
[
moduleUrl + 'controllers/userController.js'
])
});
}]);
答案 0 :(得分:0)
在某些情况下,运行方法返回异常“未定义 requireLogin“
如果您有一些不包含requireLogin
的路线,可能会发生这种情况。为防止这种情况,请先检查data
属性中是否包含requireLogin。
var requireLogin = angular.isDefined(current.data) && current.data.requireLogin;
答案 1 :(得分:0)
你所有州都没有requireLogin。
var requireLogin = current.data? current.data.requireLogin:false;