AngularJSから始めていますが、コントローラーからファクトリを使用しようとすると問題が発生します。
私は次の工場を持っています
angular.module('testingApp')
.factory('factoryService', function ($http) {
// Service logic
var getSpec = function(p) {
return $http.get('http://someurl//?p=' + p);
};
return {
getSpec: getSpec
};
});
それから私は次のようにコントローラーからそれを消費しようとします
angular.module('testingApp')
.controller('ServiceincientsCtrl',[ function (factoryService,$scope) {
console.log('Starting Service Incident Controller');
factoryService.getSpec('AAA').then(function(response){
$scope.result = response.data;
}, function(error){
console.log('opsssss' + error);
});
}]);
しかし、実行しようとすると、次のメッセージが表示されます
TypeError: Cannot read property 'getSpec' of undefined
私は何が欠けているのかわかりません、それは初心者のエラーであるはずです、私はそれをグーグルで検索しました、そして私は同じ結果で多くの例を試しました。
私が間違っていることについてのアイデアはありますか?
ありがとう!
依存関係配列表記を適切に使用していないようです。以下のコードを参照してください。配列項目として「factoryService
」と「$scope
」を追加してください。
.controller('ServiceincientsCtrl', ['factoryService', '$scope', function(factoryService, $scope) {
console.log('Starting Service Incident Controller');
factoryService.getSpec('AAA').then(function(response) {
$scope.result = response.data;
}, function(error) {
console.log('opsssss' + error);
});
}]);
依存性注入 に関するAngularドキュメント。
まず、コントローラーを適切に宣言していません。次のようになります。
.controller('ServiceincientsCtrl',['$scope', 'factoryService', function($scope, factoryService) {
Service
sは読みやすいので、個人的に使用しています。
工場はService
として次のようになります。
myApp.service('factoryService', function ($http) {
this.getSpec = function(p) {
return $http.get('http://someurl//?p=' + p);
}
});
これは、現在のコントローラーで機能します。