8

मैं इस दुनिया में नया हूं और मुझे बैकबोन और मैरियनेट की कुछ अवधारणाओं को समझने की आवश्यकता है। यहां मैं कुछ अवधारणाओं को समझाने की कोशिश कर रहा हूं जो मैं सीख रहा हूं। उन पर कुछ प्रतिक्रिया होना बहुत अच्छा होगा।बैकबोन और मैरियनेट को समझना जीवन चक्र देखें

render फ़ंक्शन टेम्पलेट को प्रस्तुत करने के लिए तर्क को परिभाषित करता है। जब यह समाप्त हो जाता है, तो onRender कॉलबैक कहा जाता है। यहां मुझे लगता है कि प्रस्तुत किए गए दृश्य को डीओएम से जोड़ा नहीं गया है। यह tagName द्वारा बनाया गया है (डिफ़ॉल्ट div है) जिसमें से जुड़ा हुआ टेम्पलेट है। उस टैग को डीओएम में स्पष्ट रूप से डालने के लिए मुझे इसे कहीं और जोड़ना होगा। क्या मै गलत हु?

सामान्य रूप से, मैं निम्नलिखित करता हूं।

var view = new MyView(); 
view.render(); 
$("container").append(view.$el);​ 

मैरियनेट क्षेत्र की अवधारणा के साथ बैकबोन बढ़ाता है। एक विशिष्ट दृश्य पेश करने के लिए show विधि को किसी क्षेत्र पर विधि कहा जा सकता है।

var view = new MyView(); 
region.show(view); 

इस मामले में, show विधि अपने आप ही render फ़ंक्शन को कॉल किया जाएगा और अंत में, देखने के सामग्री डोम में रखा जाएगा जब, onShow उस दृश्य पर कहा जाता है। ठीक है न?

मैरियनेट डॉक्टर से onDomRefresh नामक एक और कॉलबैक भी है। मेरे प्रयोगों से, मैंने देखा है कि इस विधि को onShow से पहले बुलाया गया है। तो, मेरा मानना ​​है कि दृश्य अभी तक डोम से जुड़ा हुआ नहीं है। लेकिन डॉक्टर निम्नलिखित कहते हैं।

उत्प्रेरित करने के बाद दृश्य गाया गया है, एक Marionette.Region के माध्यम से डोम में दिखाया गया है, और फिर से गाया गया है।

क्या आप इस पर कुछ संकेत दे सकते हैं?

अग्रिम धन्यवाद।

उत्तर

3

इसके लायक होने के लिए, मेरा मानना ​​है कि आपने जो भी कहा है वह कम या ज्यादा सही है।

स्रोत को देखते हुए (उपलब्ध here - "DomRefresh" के लिए देखो) MonitorDOMRefresh बिट्स हर दृश्य में मिलाया जाता है और इस API एड: तो सच में,

return function(view){ 
    view.listenTo(view, "show", function(){ 
    handleShow(view); 
    }); 

    view.listenTo(view, "render", function(){ 
    handleRender(view); 
    }); 
}; 

सब क्या हो रहा है की कुर्की है देखने के लिए 2 घटना श्रोताओं, और कॉलबैक (handleShow/handleRender) सेट एक बूलियन _isShown या _isRendered और triggerDomRefresh फोन है, जो कहते हैं:

function triggerDOMRefresh(view){ 
    if (view._isShown && view._isRendered){ 
    if (_.isFunction(view.triggerMethod)){ 
     view.triggerMethod("dom:refresh"); 
    } 
    } 
} 

तो, आप वहां जाते हैं ... onDomRefresh किसी भी समय दृश्य को दिखाया गया है, दिखाया गया है, और फिर पुन: प्रस्तुत किया गया है।

आशा है कि मदद करता है!

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