2015-10-04 15 views
17

एपीआई से मैं काम कर रहा हूं मुझे 2 अलग-अलग सूचियां लेने की आवश्यकता है और मुझे सर्वर टाइमआउट से बचने के लिए 20 आइटमों के भाग लेने की आवश्यकता है। इस कोड को मैं वस्तुओं की पूरी सूची डाउनलोड करने कर रहा हूँ के साथ

Items1.query().$promise 
.then(function (data) { 
    $scope.items1 = data.list; 
    return Items2.query().$promise; 
}) 
.then(function (data) { 
    $scope.items2 = data.list; 
}); 

:

क्या मैं वास्तव में बनाया यह है।

दोनों क्वेरी वापसी:

{ 
    list: [...], 
    next: true, 
    limit: 20, 
    last: 20 
} 

मूल रूप से यह एक पृष्ठांकन प्रणाली है।

दोनों सेवाओं के इस तरह हैं:

App.factory('Items1', ['$resource', 
    function($resource) { 
     return $resource('items1/:item1Id', { storeId: '@id' 
     }, { 
      query: { 
       method: 'GET', 
       isArray: false 
      }, 
      update: { 
       method: 'PUT' 
      } 
     }); 
    } 
]); 

मैं वास्तव में नहीं जानता कि कैसे आदेश 20.

+0

ऐसा लगता है कि आपको एक और संसाधन विधि और एपीआई एंडपॉइंट की आवश्यकता है जिसमें यूआरएल – charlietfl

+0

में एक पेज पैराम शामिल है, मेरे पास सब कुछ है जो पेजिनेशन करने के लिए है और यह ठीक काम करता है, मुझे केवल प्रत्येक आइटम के लिए क्वेरी चक्र करने की आवश्यकता है जब तक कि 'अगला' मान न हो 'false' –

+0

अच्छी तरह से यदि 'क्वेरी()' केवल 20 देता है तो आपको एक और विधि की आवश्यकता होती है जो प्रारंभ बिंदु – charlietfl

उत्तर

12

की मात्रा में उन वस्तुओं को पुश करने मैं एक उदाहरण लिखा में $ संसाधन के साथ पुनरावर्ती क्रिया बनाने के लिए रिकर्सिव वादे दिखाने के लिए jsfiddle

function getList(resource, list, last) { 
    return resource.query({last: last}).$promise.then(function(data){ 
     list = list.concat(data.list); 
     if (data.next) { 
      return getList(resource, list, data.last); 
     } 
     return list; 
    }); 
} 

getList(Items1, [], 0).$promise.then(function(list) { 
    $scope.items1 = list; 
}); 
getList(Items2, [], 0).$promise.then(function(list) { 
    $scope.items2 = list; 
}); 

आप API कॉल में last पैरामीटर पारित करने के लिए अनुमति देने के लिए अपने कोणीय संसाधनों को संशोधित करने की आवश्यकता होगी: अपनी उदाहरण के लिए यह परिवर्तित, यह तरह दिखता होगा। मुझे लगता है कि एपीआई, अगर उस पैरामीटर के साथ प्रदान की जाती है, तो इससे शुरू होने वाले अगले खंड को वापस कर देगा।

+0

बहुत बढ़िया, यह ठीक काम करता है और मैं समझता हूं कि इसे ठीक से कैसे किया जाए। आपकी सहायता के लिए धन्यवाद. –

संबंधित मुद्दे