Я хочу обобщить приведенный ниже код состояния, чтобы передать строку, которая будет служить аргументом для загрузки, и этот аргумент будет называться модулем, который затем анализируется при вызове загрузки для ленивой загрузки. Простое добавление строки приведет к ошибке, потому что 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'
});
Вам нужно создать файл 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'
...
}
Спасибо, кажется, мой подход усложняет проблему. Здесь я сослался на вопрос под другим углом: stackoverflow.com/questions/55564581/…, чтобы попытаться сохранить мой код СУХИМ, но мне все еще нужно найти ответ.