반응형
Angularjs: 여러 $resource URL/데이터 소스를 제공하는 서비스?
컨트롤러에 json 데이터를 제공하는 Angular 서비스/프로바이더가 있어 정상적으로 작동합니다.
angular.module('myApp.services', ['ngResource']).
factory("statesProvider", function($resource){
return $resource('../data/states.json', {}, {
query: {method: 'GET', params: {}, isArray: false}
});
});
그러나 다른 파일에서 같은 컨트롤러에 json 데이터를 제공해야 합니다.counties.json.
두 파일을 모두 컨트롤러에 제공하는 서비스를 작성하는 방법은 어디서 찾을 수 있습니까?
서비스를 업데이트하여 단일 리소스 해시가 아닌 리소스 해시를 반환할 수 있습니다.
angular.module('myApp.services', ['ngResource']).
factory("geoProvider", function($resource) {
return {
states: $resource('../data/states.json', {}, {
query: { method: 'GET', params: {}, isArray: false }
}),
countries: $resource('../data/countries.json', {}, {
query: { method: 'GET', params: {}, isArray: false }
})
};
});
추가해서 사용할 수 있습니다..query()마지막에는 기능 이름(예: geoProvider.states.query()그리고.geoProvider.countries.query()그리고.myApp.services컨트롤러에 주입한 후geoProvider컨트롤러 자체에도 서비스를 제공합니다.
두 파일이 모두 로딩되면 코드를 실행하길 원할 겁니다.이런 일에는 약속이 정말 잘 통한다.리소스는 약속을 반환하지 않지만 $http 서비스는 단순한 Ajax 호출에 사용할 수 있습니다.
여기에서는 2개의 데이터 파일에 대해 각각1개의 서비스를 정의하고, 2개의 파일 로드가 완료되면 이행되는 약속을 반환하는3개의 서비스를 정의합니다.
factory('states',function($http) {
return $http.get('../data/states.json');
}).
factory('countries',function($http) {
return $http.get('../data/countries.json');
}).
factory('statesAndCountries', function($q, states, countries) {
return $q.all([states, countries]);
});
다음으로 컨트롤러에서 다음을 수행합니다.
statesAndCountries.then(function(data) {
var stateData = data[0];
var countryData = data[1];
// do stuff with stateData and countryData here
});
언급URL : https://stackoverflow.com/questions/17160771/angularjs-a-service-that-serves-multiple-resource-urls-data-sources
반응형
'programing' 카테고리의 다른 글
| html 문자열을 html로 인쇄하는 방법 (0) | 2023.03.31 |
|---|---|
| 파라미터 변경 시 Angular Directive 새로 고침 (0) | 2023.03.31 |
| 도커: Apple Silicon M1의 Apache (0) | 2023.03.31 |
| HTTPS 강제 리다이렉트가 Wordpress에서 작동하지 않음 (0) | 2023.03.31 |
| 스프링 부트는 데이터를 사용하여 데이터베이스를 초기화하기 위해 데이터를 로드하지 않습니다.sql (0) | 2023.03.26 |