AngularJS / Dependency Injection - Как передать простой строковый литерал в массиве поставщика зависимостей для потребления в качестве значения? - PullRequest
0 голосов
/ 08 апреля 2019

Я хочу обобщить мой код состояния ниже, чтобы передать строку, служащую аргументом для загрузки, и этот аргумент будет называться модулем, который затем анализируется при вызове загрузки для отложенной загрузки. Простое добавление строки приведет к ошибке, поскольку Angular считает, что это поставщик, и вызывает исключение неизвестного поставщика.

Как мне достичь этой цели?

function load ($ocLazyLoad, $q, $stateParams, module){
    var deferred = $q.defer();
    try{
        $ocLazyLoad.load(module).then(function(){
            deferred.resolve();
        });
    }
    catch (ex){
        deferred.reject(ex);
    }
    return deferred.promise;
}


 $stateProvider
    .state('action', {
        name: 'action',
        url: "/actionitems",
        resolve: {
               loadDependencies: ['$ocLazyLoad', '$q', '$stateParams', load]
        },
        templateUrl: '/app/tool/action/ActionItems.html'
  });

1 Ответ

1 голос
/ 08 апреля 2019

Вам необходимо создать constant провайдера .Вы можете сделать что-то вроде этого:

angular.module('my-module').constant('myConstant', 'my-value');

А затем в вашем государственном провайдере:

$stateProvider
    .state('action', {
        name: 'action',
        url: "/actionitems",
        resolve: {
               loadDependencies: ['$ocLazyLoad', '$q', '$stateParams', 'myConstant', load]
        },
        templateUrl: '/app/tool/action/ActionItems.html'
  });

function load ($ocLazyLoad, $q, $stateParams, myConstant, module){
  // myConstant has the value 'my-value'
  ...
}
...