2012-12-26 11 views
55

मैं बैकबोन 0.9.9 में किए गए नए बदलावों को सीखने की कोशिश कर रहा हूं।बैकबोन 0.9.9: श्रोताओं के बीच अंतर और

listenTo

var View = Backbone.View.extend({ 

    tagName: "div", 

    intialize: function() { 
     this.listenTo(this.model, 'change', this.render); 
    }, 

    render: function() { 
     this.$el.empty(); 
     this.$el.append('<p>hello world</p>'); 
    } 

}); 

var View = Backbone.View.extend({ 

    tagName: "div", 

    intialize: function() { 
     this.model.on('change', this.render, this); 
    }, 

    render: function() { 
     this.$el.empty(); 
     this.$el.append('<p>hello world</p>'); 
    } 

}); 

पर मैंने सुना है कि listenTo वाई अनुमति देता है:

वर्तमान में मैं listenTo और on के बीच अंतर को समझने के लिए समस्याओं मिला वें stopListening सभी घटनाओं से सदस्यता समाप्त करने के लिए जब उदाहरण के लिए मेमोरी लीक से बचने के लिए दृश्य हटा दिया जाता है।

क्या यह एकमात्र कारण है?

+0

[बैकबोन जेएस .listenTo बनाम।] के संभावित डुप्लिकेट (https://stackoverflow.com/questions/16823746/backbone-js-listento-vs-on) –

उत्तर

40

listenTo और stopListening मूल रूप से समुदाय से आया था। वे घटनाओं को बांधना और बाध्य करना आसान बनाने में मदद करते हैं।

इस विषय पर लिखे गए सामान सहित कई सारे मौजूदा दस्तावेज और ब्लॉग पोस्ट इस विचार के आस-पास हैं।

जॉनी ओशिका पहला व्यक्ति है जिसे मैंने इस तकनीक का उपयोग करके देखा था। यह मूल रूप से एक StackOverflow सवाल यहाँ के जवाब के रूप पोस्ट किया गया: Backbone.js : repopulate or recreate the view?

आप पढ़ सकते हैं कि मैं क्या इस बारे में लिखा है, यहाँ:

+0

मैं बस इसके बारे में भी सीख रहा हूं, इसलिए यह है मेरे लिए एक समय पर सवाल। क्या अनुशंसित अभ्यास अब ऐप के जीवन चक्र के दौरान किसी बिंदु पर अनबाउंड होने की आवश्यकता हो सकती है, जो सभी घटनाओं को बाध्य करने के लिए listenTo का उपयोग करने के लिए है? – user1031947

+12

यह एक अच्छा सवाल है कि – ErichBSchulz

+0

@ स्ट्रिटर उत्तर देने के लिए अच्छा होगा, @ErichBSchulz सहमत है, हालांकि 3 ब्लॉग पोस्टों में सुनने के लिए कोई संदर्भ नहीं है, मुझे लगता है कि @ डेरिकबैली हाँ कह रहा है, 'सुनने के लिए' on'। – AJP

53

जब आप कोई दृश्य बनाते हैं, तो listenTo और on दोनों ईवेंट जोड़ें हैंडलिंग। हालांकि, जब दृश्य नष्ट हो जाता है, listenTo कॉल automatically remove the event handler होगा। यह prevents memory leaks और ज़ोंबी घटना श्रोताओं।

तो, यदि आप हैंडलर को स्वयं प्रबंधित करना चाहते हैं तो on का उपयोग करें। बस off पर कॉल करना सुनिश्चित करें। अन्यथा, listenTo पर कॉल करें।

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