在下面的示例中,我在roles
内部有data
变量,对于此变量,我必须添加角色数组。现在我在第二个状态预定义了角色,但是这个角色数组我必须从web api加载。
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('signin');
$stateProvider.state('site', {
'abstract': true,
resolve: {
authorize: ['authorization', function (authorization) {
alert(JSON.stringify(authorization))
return authorization.authorize();
}, ]
}
})
.state('signin', {
parent: 'site',
data: {
roles: []
},
url: '/signin',
views: {
'': { templateUrl: '/signin.html' },
'content@': {
templateUrl: '/index.html',
controller: 'SigninCtrl'
}
}
})
.state('WorkArea', {
parent: 'site',
url: '/WorkArea',
data: {
roles: ['User', 'Dev']
},
views: {
'': { templateUrl: '/Views/WorkArea/WorkArea.html' },
'ContentOne@': {
templateUrl: '/Views/WorkArea/ProjectList.html',
controller: 'ProjectController'
}
}
})
}]);
我在下面的链接中引用这个例子: -
答案 0 :(得分:0)
以这种方式定义:
.state('WorkArea', {
parent: 'site',
url: '/WorkArea',
data: {
roles: (function() {
return ['User', 'Dev'];
})()
},
})
您可以在这种情况下使用IIFE动态地向数据属性添加属性。
在app.run中使用:
$rootScope.$on('$stateChangeStart', function(event, toState){
var roles = toState.data.roles ;
console.log(roles);
// your custom logic here for that state
})