0

私は使用してangularJSいますが、Factory を注入するとエラーが発生します:

app.js :

angular.module('myapp', [])

myfactory.js :

angular.module('myapp', [])
.factory('httpService', function($http, $timeout) {

});

コントローラ: test.js:

angular.module('myapp', [])
.controller('test',  function($scope, $timeout, $sce, $http, httpService) {

  $scope.submit = function() {
  }
});

追加するhttpServiceとエラーになります。すべてが正しいようです。私はすべてのプロジェクトでこのファクトリを使用しています。エラー:

angular.min.js:92 Error: [$injector:unpr] http://errors.angularjs.org/1.2.25/$injector/unpr?p0=httpServiceProvider%20%3C-%20httpService
at Error (native)
at http://localhost:81/chah/assets/js/angularjs/angular.min.js:6:450
at http://localhost:81/chah/assets/js/angularjs/angular.min.js:36:202
at Object.c [as get] (http://localhost:81/chah/assets/js/angularjs/angular.min.js:34:305)
at http://localhost:81/chah/assets/js/angularjs/angular.min.js:36:270
at c (http://localhost:81/chah/assets/js/angularjs/angular.min.js:34:305)
at d (http://localhost:81/chah/assets/js/angularjs/angular.min.js:35:6)
at Object.instantiate (http://localhost:81/chah/assets/js/angularjs/angular.min.js:35:165)
at http://localhost:81/chah/assets/js/angularjs/angular.min.js:67:419
at http://localhost:81/chah/assets/js/angularjs/angular.min.js:54:25
4

4 に答える 4

6

エラーのリンクを確認してください ( https://docs.angularjs.org/error/ $injector/unpr?p0=httpServiceProvider%20%3C-%20httpService):

モジュールを複数回作成します。

angular.module('myapp', [])

一度やるべきです。次に [] なしで使用します

angular.module('myapp').factory ...
angular.module('myapp').controller ...
于 2016-05-19T09:05:17.167 に答える
3

エラーの理由は、httpServiceおよびの作成で、構文ではなくie構文をcontroller使用したため です。. Angular では、モジュールを 1 回だけ定義する必要があるため、その後の再定義でエラーが発生します。setterangular.module('myapp', [])modulegetterangular.module('myapp')

では、次app.jsのように定義しますmodule

angular.module('myapp', []) ;

を削除してgettermyfactory.js構文を使用する場合, []:

angular.module('myapp')
.factory('httpService', function($http, $timeout) {
});

そしてでtest.js

angular.module('myapp')
.controller('test',  function($scope, $timeout, $sce, $http,  httpService) {

$scope.submit = function() {
}
});

ここにドキュメントへのリンクがあります

于 2016-05-19T09:08:19.130 に答える
1

はい、

あなたがしていることは、アプリを再作成することです

あなたがする必要があるのは、それを一度定義して、そのインスタンスを使い続けることです

var app = angular.module('myapp', []);

app.factory('httpService', function($http, $timeout) {

});

app.controller('test',  function($scope, $timeout, $sce, $http, httpService) {

  $scope.submit = function() {
  }
});

または、アプリを取得する場合、構文は angular.module('myapp') です。これは「myapp」を返しますが、[] を追加すると、angular にアプリを作成してフェッチしないように指示します。

于 2016-05-19T09:03:21.387 に答える
0

コードは次のようになります。

angular.module('myapp', [])
.factory('httpService', function($http, $timeout) {

});
.controller('test',  function($scope, $timeout, $sce, $http, httpService) {

  $scope.submit = function() {
  }
});
于 2016-05-19T10:43:57.160 に答える