services - filter angularjs




أنغولارجس: خدمة تخدم مصادر عناوين ورل/مصادر موارد متعددة؟ (2)

أفترض أنك تريد تنفيذ بعض التعليمات البرمجية عند تحميل كل من الملفات. الوعود تعمل بشكل جيد حقا لهذا. لا أعتقد أن الموارد تعود الوعود، ولكن يمكنك استخدام خدمة هتب $ لمكالمات أجاكس بسيطة.

هنا أنا تعريف خدمة واحدة لكل ملف البيانات اثنين، والخدمة الثالثة التي ترجع الوعد الذي يحصل الوفاء عند تحميل كل من الملفات.

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
});

لدي خدمة / مزود الزاوي الذي يخدم البيانات جسون إلى وحدة تحكم بلدي الذي يعمل كبيرة:

    angular.module('myApp.services', ['ngResource']).
      factory("statesProvider", function($resource){
      return $resource('../data/states.json', {}, {
        query: {method: 'GET', params: {}, isArray: false}
      });
    });

ولكن أنا أيضا بحاجة إلى خدمة البيانات جسون لنفس وحدة تحكم من 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.states.query() و geoProvider.countries.query() و myApp.services يجب أن يتم حقنه في وحدة التحكم الخاصة بك، ثم حقن خدمة geoProvider في وحدة تحكم نفسها كذلك.





controller