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:如果我创建了一个提供程序,可以对其进行配置。。。并用于其他控制器中。。。我想要的是更改访问阵列。。。这将决定哪些路线可供哪些人使用。。问题是数组值本质上是动态的…
本质上是动态的
。。。这就是为什么关于来源的问题?你还没有提供任何关系细节,也没有确定它们来自何处“动态”在这里的确切含义是什么?显示动态特性如何显示自身的预期用途