2013-01-18 29 views
11

क्या मैरियनेट समग्र दृश्य टेम्पलेट में पैरामीटर प्राप्त करने का कोई तरीका है? मैंने सोचा कि जो भी पैरामीटर मैंने दृश्य को आरंभ किया है वह टेम्पलेट में उपलब्ध होगा, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।बैकबोन मैरियनेट समग्र दृश्य टेम्पलेट के पैरामीटर को कैसे पास करें

Views.myView = Marionette.CompositeView.extend({ 
    template: '#myView', 
    otherstuff... 
}); 


var collection = new App.Collection(); 
App.main.show(new Views.myView({ 
    collection: collection, 
    isMine: true 
})); 

टेम्पलेट:

<%= isMine %> 

और जब टेम्पलेट isMine प्रदान की गई है अपरिभाषित है:

उत्तर

17

आप इस के लिए templateHelpers समारोह का उपयोग कर सकते

Views.myView = Marionette.CompositeView.extend({ 
    template: '#myView', 
    serializeData: function() { 
     var viewData = {}; 
     viewData.isMine = this.options.isMine === undefined ? true : this.options.isMine; 
     return viewData; 
    }, 
    otherstuff... 
}); 
+1

+1 यह सही तरीका है। यदि कोई सोच रहा था तो आप टेम्पलेट के बजाय टेम्पलेट हेल्पर को सीधे ऑब्जेक्ट भी पास कर सकते हैं :) –

+0

यद्यपि यदि आप किसी ऑब्जेक्ट में पास करते हैं, तो आपको "इस" कीवर्ड तक सीधे पहुंच नहीं होगी। (क्षमा करें, यह मुझे मेरी टिप्पणी संपादित करने की अनुमति नहीं देगा!) –

6

इस यह पता लगाने की freenode chatroom में ब्रायन-मन से कुछ मदद मिल गया। मैंने मूल्य को देखने के लिए पास कर दिया, लेकिन मुझे serializeData विधि को ओवरराइड करके वास्तविक टेम्पलेट में एक संपत्ति के रूप में भेजने की आवश्यकता है।

मैं डिफ़ॉल्ट को सही के रूप में सेट करने के लिए भी एक चेक करता हूं इसलिए मुझे मूल्य में गुजरना नहीं है यदि मैं नहीं चाहता हूं।

-2

आप दृश्य ':: {isMine सच} मॉडल' की मॉडल गुण सेट कर सकते हैं। उदाहरण के लिए मेरे पास एक लेआउट है जो प्रस्तुत करने पर विभिन्न क्षेत्रों को भरता है।

onRender: function() { 
      var contactInfo = this.model.get('contactInfo'); 

      this.contactInfoRegion.show(new ContactInfoView(
       { 
        model: contactInfo, 
        travelerNumber: this.travelerNumber, 
        numberOfTravelers: this.numberOfTravelers 
       } 
      )); 
} 

var ContactInfoView = Backbone.Marionette.ItemView.extend({ 
     model: ContactInfoModel, 
     template: Backbone.Marionette.TemplateCache.get(contactInfoTemplate), 
     templateHelpers:function(){ 

      return { 
       numberOfTravelers: this.options.numberOfTravelers, 
       travelerNumber: this.options.travelerNumber 
      } 
     } 
    });