2011-04-12 16 views
5

से एक्सेस दृश्य backbone.js में किसी मॉडल से दृश्य को कैसे एक्सेस कर सकता हूं।backbone.js/मॉडल

मुझे मॉडल.change() पर दृश्य को फिर से प्रस्तुत करना अच्छा लगेगा।

उत्तर

10

मॉडल की विशेषता में विचार जोड़ना नो-नो है।

आपको इसके परिवर्तन पर मॉडल से दृश्य तक पहुंचने की आवश्यकता क्यों होगी?

आपके विचार में, बस बाँध:

this.model.bind('change', this.modelChanged, this) // (event, function, context) 

और अब से, जब अपने मॉडल में परिवर्तन, अपने दृश्य के modelChanged प्रक्रिया स्वतः ही कहा जाएगा से।


संस्करण >0.9 में, उचित सिंटैक्स ध्यान में रखते हुए इस तरह होगा।

this.model.on('change', this.modelChanged, this) // (event, function, context) 
+0

शिक्षण के लिए धन्यवाद :) यदि मैं आपका कोड करता हूं तो मुझे मिलता है: अनकॉट टाइप एरर: ऑब्जेक्ट [ऑब्जेक्ट डोमविंडो] में कोई विधि 'परिवर्तन' नहीं है। Http://www.ichbinadrian.ch/map/stackoverflow पर आप कोड पर एक नज़र डाल सकते हैं। मैं प्रोटोटाइप और सीख रहा हूं :) – thgie

+1

'this.view' रिटर्न क्या डीबग करने का प्रयास करें। यह कोड का एक बड़ा टुकड़ा है और यदि आप इसे आवश्यक भागों तक सीमित कर सकते हैं तो यह बहुत उपयोगी होगा। – pawlik

1

आप दो बाइंडिंग से एक का उपयोग हो सकता है:

this.model.bind('change', this.modelChanged) 

this.model.bind('refresh', this.modelRefreshed) 

डॉक्स की जाँच करें मतभेदों को देखने के लिए।

1

मॉडल में view संपत्ति जोड़ने के लिए एक और संभावित स्नफू है। यह संभव है कि एक मॉडल को कई विचारों से प्रदर्शित किया जा सके। जब ऐसा होता है तो आपको view संपत्ति (एक सरणी) views में बदलना होगा। वह हैरी कोडिंग है। मैंने यह बात करने शुरू कर दिया और एक बार मैंने देखा कि कई विचार शामिल हो सकते हैं। मुझे एहसास हुआ कि यह प्रकाशक-ग्राहक पैटर्न को संभालने का एक और तरीका था।

अन्य लोग मॉडल को देखने में खुश हैं और दूसरे को दो-तरफा संचार के साधन के रूप में संदर्भित करते हैं। Gravel-Niquet अपने Todos नमूना ऐप में ऐसा करता है। लर्नर ने जून 2011 के लिनक्स जर्नल लेख में बैकबोन.जेएस पर इसका सुझाव दिया। वरीयता का मामला, शायद, लेकिन मैं पावलिक के साथ हूं। घटनाओं के लिए चिपकाओ; यही वह है जो वे हैं।