2012-12-19 12 views
11

मैं backbone.js का उपयोग कर नमूना ऐप लिख रहा हूं।बैकबोन रेंडर मॉडल अपडेट पर देखें

अपने मॉडल की अद्यतन मैं मेरे विचार फिर से प्रस्तुत करना इस फैशन

$('.target').html(""); 
$('.target').append(this.$el.html(this.template(model))) 

में एक बार दृश्य मॉडल अद्यतन [परिवर्तन ईवेंट पर] के बाद फिर से प्रदान की गई है पर, घटनाओं el के बच्चों से जुड़ी हो जाता है खो गया [jQuery लाइव जैसा प्रतीत नहीं होता है]। क्या यह ज्ञात मुद्दा है या क्या मुझे कुछ याद आ रहा है? क्या मुझे append के बजाय HTML को प्रतिस्थापित करने का प्रयास करना चाहिए? fiddle

+0

आप अपने पहेली को ठीक करना चाहते हैं ताकि यह चल सके। जैसे। jQuery का उपयोग करना और अंडरस्कोर और बैकबोन सहित –

+1

आपको दो कथन की आवश्यकता नहीं है। बस एक का उपयोग करें: '$ ('target')। Html (यह। $ El.html (this.template (मॉडल)))', जो HTML को साफ़ करने और एक नया – Matanya

+0

@ माइक फ़ील्डन I जोड़ने के बराबर है। मुझे अपना पूरा ऐप डालने की आवश्यकता हो सकती है: डी ने सोचा था कि मेरे मुद्दे को समझने के लिए दृश्य पर्याप्त होगा – Tamil

उत्तर

10

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

दृश्य:

render: function() { 
    this.$el.html(this.template(model)); 
    return this; 
} 

कोलर (पहले प्रस्तुत करना पर):

var view = new SomeView(); 
$('.target').append(view.render().el); 

बाद पर प्रस्तुत करता है: दृश्य

view.render(); 

के बाद डोम में गाया कर दिया गया है यह खुशी से रख सकते हैं माता-पिता के विचारों के बारे में कुछ भी जानने के बिना खुद को फिर से प्रस्तुत करना। इवेंट बाइंडिंग को रेंडर के बीच बरकरार रहना चाहिए।

+0

तय किया है, लेकिन जोड़ना एक ही सामग्री को दो बार जोड़ देगा या जितनी बार मैं प्रतिस्थापित करने के बजाय 'ऐपेंड' के मॉडल मॉडल कोज़ को अपडेट करता रहता हूं? – Tamil

+1

@ टिमल बिंदु यह है कि आप इसे केवल एक बार 'संलग्न' करते हैं, जब आप दृश्य को पहली बार दिखाना चाहते हैं। उसके बाद दृश्य पर 'रेंडर' को कॉल करने के लिए पर्याप्त है, क्योंकि 'देखें। $ El' पहले से ही डोम में है। मैंने स्पष्टता के लिए अपना जवाब अपडेट किया। लेकिन हां, '$। जगह बदलें 'या किसी अन्य तरीके से एक ही परिणाम होगा। – jevakallio

+0

@fenciff मुझे यह नहीं पता था :) यह वास्तव में ठीक काम करता है :) – Tamil

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