2014-10-09 3 views
5

AngularJS로 시작하고 컨트롤러에서 팩토리를 사용하려고 할 때 몇 가지 문제가 있습니다.AngularJS - Factory - TypeError : 정의되지 않은 'getSpec'속성을 읽을 수 없습니다.

나는 다음과 같은 공장을

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 

제가 누락 된 부분을 모르겠습니다. 초보자 오류 여야하며 봤습니다. 같은 결과를 가진 모든 예제.

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

감사합니다.

답변

11

종속 배열 표기법을 올바르게 사용하지 않는 것 같습니다. 아래 코드를 참조하십시오. 배열 항목으로 '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); 
    }); 

}]); 

dependancy injection의 각형 문서.

+0

감사합니다. 정말 도움이 !!! – federom

3

먼저 컨트롤러를 올바르게 선언하지 않았습니다. 그것은 다음과 같이한다 : 나는 그들을 더 읽기 찾을 나는 개인적으로 Service의를 사용

.controller('ServiceincientsCtrl',['$scope', 'factoryService', function($scope, factoryService) { 

.

myApp.service('factoryService', function ($http) { 

    this.getSpec = function(p) { 
     return $http.get('http://someurl//?p=' + p); 
    } 

}); 

이 현재 컨트롤러와 함께 작동합니다 :

은 여기 공장 Service A와 같을 것이다거야.

+0

감사합니다 !!! 정말 도움이 !!! – federom