2015-01-06 4 views
6

मैं नवीनतम संस्करण (2.3.0) के प्रलेखन को पढ़ रहा था और यह कह रहा है कि एप्लिकेशन क्षेत्र अब बहिष्कृत हैं।MarionetteJS: अनुप्रयोग क्षेत्र बनाम लेआउट

आवेदन क्षेत्र

चेतावनी: पदावनत इस सुविधा को अनुचित है। अपने दृश्य पेड़ की जड़ के रूप में एप्लिकेशन का उपयोग करने के बजाय, आपको लेआउट व्यू का उपयोग करना चाहिए। अपने लेआउट व्यू को पूरे दस्तावेज़ में देखने के लिए, आप को अपने एल 'बॉडी' पर सेट कर सकते हैं। यह कुछ निम्न जैसा दिख सकता है: var रूटव्यू = Marionette.LayoutView.extend ({el: 'body'});

डेविड सुल्क की पुस्तक बैकबोन मैरियनेट सहित अधिकांश ट्यूटोरियल में: एक सज्जन परिचय यह अनुप्रयोग में क्षेत्रों को जोड़ने के लिए निम्न कोड स्निपेट का उपयोग करता है।

नीचे दिए गए उदाहरण के बजाय, जो addRegions का उपयोग करता है, इसके बजाय मुझे क्या करना चाहिए?

अर्थात

var ContactManager = new Marionette.Application({}); 
ContactManager.addRegions({ 
    mainRegion: "#main-region" 
}); 

var ContactView = Marionette.ItemView.extend({ 
    template: "#whatever", 
    ui: { 
     button: ".button". 
    }, 
    events: { 
     "click @ui.button": "click", 
    }, 
    click: function() { 
     console.log("do stuff here..."); 
    } 
}); 

ContactManager.on("start", function() { 
    var contactView = new ContactView({ 
     model: someModel 
    }); 
    ContactManager.mainRegion.show(contactView); 
}); 

उत्तर

7

बजाय एक layoutview का प्रयोग करें।

उदाहरण के लिए कर सकता है:

var ContactManager = new Marionette.Application({}); 
var LayoutView = Backbone.Marionette.LayoutView.extend({ 
    template: "#layout-view-template", 

    regions: { 
    menu: "#menu", 
    content: "#content" 
    } 
}); 

ContactManager.layout_view = new LayoutView(); 
ContactManager.layout_view.render(); 

मैं वास्तव में सीधे मेरे ऐप वस्तु के लिए क्षेत्र जोड़ने कभी नहीं।

+1

क्या app.start() से पहले लेआउट व्यू प्रस्तुत किया जा सकता है या इसे ऑनस्टार्ट हैंडलर के अंदर बुलाया जाना चाहिए? – Abe

+1

लेआउट व्यू को प्रस्तुत करना तुल्यकालिक है, इसलिए आपको यह सुनिश्चित करना होगा कि लेआउट को आपके क्षेत्रों में दृश्य दिखाना पड़े। इसके अलावा, जब आप चाहें तो आप इसे कर सकते हैं। यह भी ध्यान रखें कि आप उन तत्वों के आधार पर क्षेत्रों को परिभाषित कर सकते हैं जो पहले से ही डोम में हैं, क्या आप फ्लाई पर विचार दिखाने के लिए क्षेत्र बनाना चाहते हैं। – Trace

+0

दरअसल, आप कैसे जानते हैं कि डीओएम को प्रस्तुत दृश्य संलग्न करें? आइए मान लें कि मेरे पास #menu और #content तत्वों के साथ एक टेम्पलेट है, लेकिन मैं वास्तव में एचटीएमएल को इस प्रस्तुत लेआउट व्यू को कैसे संलग्न करता हूं? – Abe

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