2012-07-17 18 views
8

मेरे पास एक संग्रह है जो बाहरी एपीआई से उपयोग किया जाता है, एपीआई कई ऑब्जेक्ट्स + ऑब्जेक्ट्स के लिए पेजिंग विवरण देता है, तो मैं शायद इन्हें केवल एक सबसेट दिखाना चाहता हूं मेरे विचार में वस्तुओं, लेकिन आगे पृष्ठवार दृश्य के लिए अनुमति भीबैकबोन के साथ पेजिनेशन को कैसे संभालना है। मैरियनेट

थोड़ा बेहतर मेरी स्थिति स्पष्ट करने के लिए:

  1. लाने 20 परिणामों सर्वर से, आगे पृष्ठों
  2. दिखाने के 10 परिणामों के लिए पृष्ठांकन डेटा प्राप्त + अधिक बटन
  3. अधिक क्लिक करने, 10 परिणाम दिखाता है + अधिक बटन
  4. अधिक क्लिक करें, सर्वर से हासिल करेगा 20 परिणाम 10 परिणाम दिखाता है + अधिक बटन ...

क्या अपने समाधान हो सकता है? मैं Backbone.Paginator पाया है, लेकिन मैं नहीं जानता कि कैसे अच्छी तरह से यह कठपुतली के साथ एकीकृत करता है, या अगर कोई पहले से मौजूद एक Backbone.Marionette.Paginator विस्तार :)

उत्तर

8

Backbone.Paginator एक्सटेंशन और अतिरिक्त तरीकों और प्रदान करता है बैकबोन संग्रह के शीर्ष पर विशेषताएं, जिसका अर्थ है कि उन्हें मैरियनेट सहित किसी भी प्रकार के बैकबोन व्यू से उपयोग करने योग्य होना चाहिए।

आपको मैरियनेट और पेजिनेटर को एकीकृत करने के लिए कुछ भी विशेष नहीं करना चाहिए। आप एक ऐसा दृश्य तैयार करेंगे जो अतिरिक्त विधियों और विशेषताओं के फायदे लेता है, लेकिन आप मानक बैकबोन दृश्यों के बजाय मैरियनेट के विचारों को उस दृश्य को आधारित करेंगे। इस मामले में, मैं या तो संग्रह दृश्य या मैरियनेट से एक समग्र दृश्य की सिफारिश करता हूं, प्रत्येक आइटम को व्यक्तिगत रूप से पेज किए गए संग्रह से प्रतिपादित करता हूं।

4

यहां बताया गया है कि मैंने मैरियनेट और बैकबोन.paginator को एकीकृत करने की समस्या का समाधान कैसे किया। यह कुछ अर्थों में 'सीधा' था, लेकिन रीढ़ की हड्डी के लिए एक नया काम करने वाला। Marionette यह मुझे कुछ समय के लिए परेशान! मुझे आशा है कि यह किसी के लिए उपयोगी होगा।

पेजिनेटर की paginator_ui ऑब्जेक्ट से जानकारी प्रस्तुत करने के लिए समग्र दृश्य पर serializeData विधि का उपयोग करें।

/* a view for presenting a backbone.paginator collection, 
* and for presenting and handling its pagination UI element */ 
App.module('Views', function(Views, App, Backbone, Marionette, $, _) { 
    Views.PaginatedCollectionView = Backbone.Marionette.CompositeView.extend({ 
     template: 'backbone/templates/paginated_collection_view', 
     itemView: App.Views.StructureView, 

     /* I'm not using a model, but you could if you 
     * wanted? You might even merge the two */ 
     serializeData: function(){ 
      if (this.model){ 
      data = this.model.toJSON(); 
      } else { 
      // we want to render the paginator_ui in our templates 
      data = this.collection.paginator_ui; 
      } 

      return data; 
     } 
    }); 
}); 
संबंधित मुद्दे