2013-06-01 15 views
21

पर मॉडल को फिर से प्रस्तुत करने के लिए मैं हैंडलबार्स टेम्पलेट इंजन का उपयोग कर रहा हूं।मैरियनेट आइटम देखें

Backbone.Model.extend({ 
     urlRoot: Config.urls.getClient, 
     defaults: { 
      contract:"", 
      contractDate:"", 
      companyTitle:"", 
      contacts:[], 
      tariff: new Tariff(), 
      tariffs: [], 
      remain:0, 
      licenses:0, 
      edo:"" 
     }, 
     initialize:function(){ 
      this.fetch(); 
     } 
    }); 

तो कठपुतली ItemView:
हां, तो मैं मॉडल है

Marionette.ItemView.extend({ 
     template : templates.client, 
     initialize: function() { 
      this.model.on('change', this.render, this); 
     }, 
     onRender: function() { 
      console.log(this.model.toJSON()); 
     }  
    }); 

और फिर मैं फोन सब कुछ के रूप में:

new View({ 
    model : new Model({id:id}) 
     }) 

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

लेकिन, दृश्य अपडेट नहीं किया गया है।

मैं इसे कैसे ठीक कर सकता हूं?

पीएस मैं समझता हूं, कि मैं कॉल किए गए कॉलबैक पर रेंडर विधि कह सकता हूं। लेकिन जब मैं मॉडल बदल दूंगा, तो मुझे आगे की कार्रवाइयों के लिए भी इसकी आवश्यकता होगी।

उत्तर

3

दरअसल, बैकबोन और मैरियनेट इसे करने के लिए पर्याप्त स्मार्ट हैं।
समस्या टेम्पलेट और डेटा में थी क्योंकि मुझे यह another question मिला। तो, मैंने सब कुछ फिर से जांच लिया और परिणाम मिला।

45

दृश्य में, आप कोड निम्न का उपयोग कर सकते

modelEvents: { 
     'change': 'render'; 
    } 
बजाय

initialize: function() { 
     this.model.on('change', this.render, this); 
    }, 
    onRender: function() { 
     console.log(this.model.toJSON()); 
    } 
+27

सिर्फ '{ 'परिवर्तन': 'प्रस्तुत करना'}' चाल भी –

+0

तुम मुझे को इंगित कर सकते है modelEvents के आसपास दस्तावेज? विशेष रूप से, मैं मॉडल एवेन्ट्स और उनके संबंधित स्पष्टीकरण की एक सूची की तलाश में हूं – splay

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