2014-12-21 4 views
1

일부 AJAX 요청을 수행하는 서비스를 만들려고합니다. 그러나 컨트롤러에서 무언가를하려고하면 서비스가 계속 정의되지 않습니다. 여기 내 코드가있다.내 컨트롤러에서 내 서비스에 액세스 할 수 없습니다. (정의되지 않음)

나는 여기에 많은 예제를 발견했으며 많은 것을 따라하려고했지만 서비스가 무엇이든지 상관없이 정의되지 않고 있습니다.

내 서비스 :

MyApp.factory('myService', function($http) { 

return { 
    findAll: function() { 
     return $http.get('/findAll') 
     .then(function(result) { 
      return result.data; 
     }); 
    } 
    } 
}); 

내 컨트롤러 :

MyApp.controller('UserController', ['$scope', '$http', 'myService', function($scope, $http, $log, myService) { 

// Whatever I do with myService here it gets undefined. 
//$scope.test = myService.findAll(); 
//myService.findAll(); 


}]); 

내가 올바르게 삽입하지 않지만 무슨 잘못 내가 볼 수없는 가정합니다. 나는 Angular에 상당히 새롭다. .. 어떤 포인터라도 감사 할 것이다.

+0

서비스가'undefined'이고'myService.findAll()'의 결과가 아닌 것이 확실합니까? – simeg

답변

2

주사제에서 $log을 제거하십시오. 현재 myService 서비스의 이름을 $log으로 지정하고 있으므로 컨트롤러 내부의 myServiceundefined입니다.



2 솔루션
이 그들을 이름없이를 주입 허용의이 같은에 "이름"서비스를 피하기 위해

MyApp.controller('UserController', ['$scope', '$http', 'myService', 
    function($scope, $http, myService) { 

    // Whatever I do with myService here it gets undefined. 
    //$scope.test = myService.findAll(); 
    //myService.findAll(); 
}]); 

.

MyApp.controller('UserController', function($scope, $http, myService) { 

    // Whatever I do with myService here it gets undefined. 
    //$scope.test = myService.findAll(); 
    //myService.findAll(); 
}); 

닫는 브래킷을 반드시 제거하십시오.

+0

simpe - 와우, 나는 그걸 결코 생각하지 못했다는 것을 몰랐다. 고마워요! 수락 됨. –

+0

문제 없으니 도움이 되니 기쁩니다. 서비스에 "이름 지정"을하지 않으려는 경우 이름을 지정하지 않고 서비스를 삽입 할 수 있습니다. 방법을 보여주기 위해 답을 업데이트 할 것입니다. 즐거운 휴일! – simeg

+0

간단합니다 - 감사합니다. 사실 제 2의 솔루션을 선호한다고 생각합니다. 즐거운 휴일! –

관련 문제