20

私は次のコードを持っています:

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引数が縮小化のために「e」に名前が変更されたためです。では、コードの縮小を回避するために、名前で何を挿入するかをappModuleに手動で通知するにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

44

試す

appModule.factory('sharedApplication', ['$rootScope','$http',function($rootScope, $http) {

}]);

よろしく

于 2012-09-27T21:56:30.590 に答える
2

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;
}]);
于 2014-07-09T20:43:42.213 に答える
0

よりエレガントで読みやすいアプローチ:

appModule.factory('myFactory', myFactory);

myFactory.$inject = ['$rootScope','$http'];
function myFactory($rootScope, $http) {
    ...
}
于 2017-08-03T05:35:35.357 に答える