2017-11-16 1 views
0

저는 Angular를 매우 신 낯설습니다. 일부 자습서를보고 일부 문서를 읽었으며 코딩을 시작했습니다.AngularJs - 서비스 제공

angular.module('CourseStoryApp').service("CourseStoryService", ['$http', '$routeParams', function ($http, $routeParams) { 
    return $http({ 
     url: "CourseStoryWebService.asmx/Course", 
     method: "GET", 
     params: { eID: $routeParams.eid } 
    }).then(function (response) { 
     return response.data; 
    }); 
}]); 

angular.module('CourseStoryApp').controller('HeaderController', ['$scope', 'CourseStoryService', function ($scope, CourseStoryService) { 
    CourseStoryService.then(function (data) { 
    $scope.courseStory = data; 
    }); 
}]); 

이 서비스를 생성하고 컨트롤러를 호출하는 올바른 방법입니다 :

이 내 코드는?

답변

0

서비스에 CourseStories의 컨텍스트에있는 몇 가지 방법이 포함되어야합니다. get 특정 상품 인 delete과 같은 것을 원할 수 있습니다. 이러한 각각의 사용 사례에 대해 별도의 서비스를 만드는 것은 어리석은 일입니다.

사용할 수있는 방법을 publicly으로 만들려면 해당 서비스 내의 변수 this에 할당하십시오.

angular 
    .module('CourseStoryApp') 
    .service('CourseStoryService', ['$http', function($http) { 

    // Better to uncouple the service from the router, so you have a generic 
    // 'getStory' method. 
    this.getStory = function(id) { 
     return $http({ 
     url: "CourseStoryWebService.asmx/Course", 
     method: "GET", 
     params: { eID: id } 
     }).then(function(response) { 
     return response.data; 
     }, function() { 
     // Error handling 
     // Maybe write some logs etc. 
     }); 
    }; 
    }]); 

을 그리고 당신의 컨트롤러는 다음과 같이이 서비스를 사용할 수 있습니다 :

그래서 서비스는 다음과 같이 할 수

angular 
    .module('CourseStoryApp') 
    .controller('HeaderController', ['$scope', '$routeParams', 'CourseStoryService', function($scope, $routeParams, CourseStoryService) { 

    // Consume your Service Method like this. 
    CourseStoryService.getStory($routeParams.eid).then(function(data) { 
     $scope.courseStory = data; 
    }, function() { 
     // Error Handler 
     // Notify user etc. 
    }); 
    }]); 

각도에서 $http 공급자가 특정 요청에 대한 몇 가지 바로 가기 방법을 가지고 있습니다 $http.get() 등의 유형이 있습니다. official docs에서 자세한 내용을 볼 수 있습니다.

+0

도움을 주셔서 대단히 감사합니다. :) – kby

0

.then() 메서드를 사용하는 경우 서비스에 promise라는 것을 구현해야합니다.

각도가 처음이라면 각도 2 이상을 배울 것을 제안합니다. 첫 번째 버전에서 몇 가지 문제가 발생했습니다

+0

내 서비스에서 약속을 구현하는 방법을 보여줄 수 있습니까? – kby

+0

죄송합니다. $ HTPP는 이미 약속을 반환합니다. 서비스에서 .then() 메서드를 제거하고 서비스 외부의 .then() 메서드 만 호출해야합니다. –