programing

Angularjs: 여러 $resource URL/데이터 소스를 제공하는 서비스?

newnotes 2023. 3. 31. 22:37
반응형

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

반응형