आज के रूप में वहाँ अब भी है कोई एम्बर में पेजिनेशन को संभालने के लिए डिफ़ॉल्ट तरीका।
पहले हम शायद, अधिक सरल बात पर गौर करना चाहिए एक findAll
अनुरोध के पृष्ठांकन।
यह .query({page:3})
की तरह कुछ के साथ किया जा सकता है लेकिन सुराग कुछ समस्याएं हैं:
- इस क्लासिक पृष्ठांकन के लिए एक अच्छा समाधान है, लेकिन के लिए एक अनंत-स्क्रॉल आप फिर भी मैन्युअल परिणाम मर्ज करने के लिए की जरूरत है।
- परिणाम कैश नहीं किए गए हैं, इसलिए एक पेजिनेटेड सूची पर आगे और पिछड़े आगे बढ़ने के परिणामस्वरूप बहुत सी क्वेरीएं होती हैं। कभी-कभी यह आवश्यक है यदि सूची संपादन योग्य है, लेकिन अक्सर इसकी नहीं।
दूसरी समस्या के लिए मैं एक छोटे से addon called ember-query-cache
कि दुकान में हुक और आप क्वेरी परिणाम कैश करने के लिए अनुमति देता है निर्माण। एक बहुत छोटा डेमो here उपलब्ध है।
अब अगर हम एक रिश्ता मैं ईमानदारी से जब तक आप एंबर-डेटा से ही बेहतर समर्थन शीर्ष स्तर .query
उपयोग करने के लिए सिफारिश करेंगे के बारे में बात:
store.query('task', { person: get(person, 'id'), page: 3 }
इसके बारे में बुरा कुछ भी नहीं है। आप अपना परिणाम प्राप्त करते हैं और दूसरे दिशा में संबंध रखते हैं। जब तक आपको कैशिंग की आवश्यकता नहीं होती है, तब तक यह एम्बर-डेटा में किसी भी हैकिंग के बिना काम करता है, और यदि आपको कैशिंग की आवश्यकता है तो मुझे अपने एडन में बहुत कम हैकिंग की आवश्यकता है।
हम अभी भी एम्बर-डेटा पूरी तरह से JSONAPI बनने की उम्मीद करते हैं, और इसके लिए अंकन की आवश्यकता होगी। मुझे लगता है कि एक एपीआई परिप्रेक्ष्य का निर्माण सबसे अच्छा काम होगा, रिश्ते द्वारा लौटाए गए कईएरे पर अगले और पिछले पृष्ठ के लिए पूछने की क्षमता होगी। यह JSONAPI के साथ होगा जहां अगला और पिछला लिंक प्रदान किया जाएगा। लेकिन यह समझने के लिए कि अब आपको शीर्ष स्तर .query
पर बड़ा सुधार किए बिना एम्बर डेटा में गहराई से हैक करना होगा, जिसे मैंने कई परियोजनाओं में सफलतापूर्वक उपयोग किया था।
क्या आपने कभी इसका अच्छा समाधान निकाला है? जवाब देने के लिए – RyanJM