Ответ 1
Try
appModule.factory('sharedApplication', ['$rootScope','$http',function($rootScope, $http) {
}]);
рассматривает
У меня есть следующий код:
appModule = angular.module('appModule', []);
appModule.factory('sharedApplication', function($rootScope, $http) {
var sharedApp;
sharedApp = {};
sharedApp.currentView = "home-section";
sharedApp.pastEvents = null;
$http.get('api/highlights').success(function(response) {
return sharedApp.pastEvents = response.data;
});
return sharedApp;
});
Этот код работает отлично и, как ожидалось, до тех пор, пока я не попытаюсь минимизировать свой javascript, а затем получаю
Error: Unknown provider: eProvider <- e
Это потому, что аргумент $http в моей функции factory был переименован в 'e' для целей минимизации. Итак, как я могу вручную сообщить appModule, что нужно вводить по имени, чтобы избежать минимизации нарушения моего кода?
Спасибо заранее.
Try
appModule.factory('sharedApplication', ['$rootScope','$http',function($rootScope, $http) {
}]);
рассматривает
ng-annotate также является хорошей библиотекой, так что требуемая зависимость вводится автоматически. Вы должны проверить это.
Пример кода:
/* ngInject */
appModule.factory('sharedApplication', function($rootScope, $http) {
var sharedApp;
sharedApp = {};
sharedApp.currentView = "home-section";
sharedApp.pastEvents = null;
$http.get('api/highlights').success(function(response) {
return sharedApp.pastEvents = response.data;
});
return sharedApp;
});
Тогда вам не нужно писать:
appModule.factory('sharedApplication', ['$rootScope','$http',
function($rootScope, $http) {
var sharedApp;
sharedApp = {};
sharedApp.currentView = "home-section";
sharedApp.pastEvents = null;
$http.get('api/highlights').success(function(response) {
return sharedApp.pastEvents = response.data;
});
return sharedApp;
}]);
Более элегантный и понятный подход:
appModule.factory('myFactory', myFactory);
myFactory.$inject = ['$rootScope','$http'];
function myFactory($rootScope, $http) {
...
}