Javascript 在$stateProvider中动态注入值
我有一个路径,它有一个Javascript 在$stateProvider中动态注入值,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我有一个路径,它有一个权限对象,有一个数组访问权限 angular.module('app') .config(['$stateProvider',function($stateProvider){ $stateProvider .state('staffpanel', { url: '...', data: { permissions: { access: ['admin
权限
对象,有一个数组
访问权限
angular.module('app')
.config(['$stateProvider',function($stateProvider){
$stateProvider
.state('staffpanel', {
url: '...',
data: {
permissions: {
access: ['admin', 'moderator']
}
}
});
}])
从我的服务中,我得到了一个具有如下动态值的数组:
var access = ['admin', 'business','moderator];
有没有办法将此
数组
注入我的权限
对象?在配置中,我只能使用提供程序
和常量
。当config
函数运行时,我们是否可以动态注入access
数组的值?resolve
是映射依赖项的替代方法。如果您想访问工厂
或服务
,可以在配置
阶段后将其注入您的状态,请使用解析
通过使用resolve
,您仍然可以将数据传递到您的状态和控制器,而无需太多麻烦。请注意,此时,config
阶段已经过去。还请注意,resolve
阶段发生在加载控制器之前,因此您可以确保在实例化控制器时,您的数据已经被注入
angular.module('app')
.config(['$stateProvider',function($stateProvider){
$stateProvider
.state('staffpanel', {
url: '...',
resolve:{
//note that you can inject other services/factories here.
permissions:['access',function(access){
//return useful stuffs based on your logic
return ['admin','moderator']
}]
}
});
}])
在控制器级别,您只需按如下方式访问它:
angular.module('app')
.controller('myCtrl',['$scope','permissions',function($scope,permissions){
console.log(permissions); //['admin', 'moderator']
}]
但是,出于其他原因,如果您需要在
配置
阶段进行配置设置,则必须使用提供程序
angular.module('app')
//inject your other providers here!
.config(['$stateProvider', 'accessProvider', function($stateProvider,accessProvider){
$stateProvider
.state('staffpanel', {
url: '...',
data: {
permissions: {
//you can use your accessProviders methods here
access: ['admin', 'moderator']
}
}
});
}])
了解AngularJs的生命周期很好。这将讨论依赖注入的各个阶段。可以创建您自己的提供者。虽然不是100%清楚你想做什么。。。或者您的数据库中
访问
数组的实际源是什么service@charlietfl:如果我创建了一个提供程序,可以对其进行配置。。。并用于其他控制器中。。。我想要的是更改访问阵列。。。这将决定哪些路线可供哪些人使用。。问题是数组值本质上是动态的…本质上是动态的
。。。这就是为什么关于来源的问题?你还没有提供任何关系细节,也没有确定它们来自何处“动态”在这里的确切含义是什么?显示动态特性如何显示自身的预期用途