2015-01-06 19 views
6

Stavo leggendo la documentazione dell'ultima versione (2.3.0) e sto dicendo che le regioni di applicazione ora sono deprecate.MarionetteJS: aree di applicazione e layout

Regioni applicazione

Attenzione: deprecati Questa funzione è deprecato. Invece di utilizzare l'applicazione come radice dell'albero delle viste, è necessario utilizzare una vista Layout . Per adattare la vista Layout all'intero documento, è possibile impostare suo 'el' 'corpo'. Questo potrebbe essere simile al seguente: var RootView = Marionette.LayoutView.extend ({el: 'body'});

Nella maggior parte dei tutorial, incluso il libro di David Sulc Backbone Marionette: A Gentle Introduzione utilizza il seguente frammento di codice per aggiungere regioni a un'applicazione.

Invece del seguente esempio seguente, che utilizza addRegions, cosa dovrei fare invece?

cioè

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); 
}); 

risposta

7

Utilizzare un layoutview invece.

Si potrebbe fare ad esempio:

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(); 

ho mai effettivamente aggiungere le regioni per il mio oggetto app direttamente.

+1

È possibile eseguire il rendering della vista di layout prima che venga chiamato app.start() o debba essere chiamato all'interno del gestore onStart? – Abe

+1

Il rendering di una vista di layout è sincrono, quindi è necessario assicurarsi che il layout sia sottoposto a rendering prima di voler mostrare le viste nelle sue regioni. Oltre a questo, puoi farlo quando preferisci. Si noti inoltre che è possibile definire le regioni in base agli elementi già presenti nel DOM, se si desidera creare regioni per mostrare le viste al volo. – Trace

+0

In realtà, come sai collegare la visualizzazione renderizzata al DOM? Diciamo che ho un modello con gli elementi #menu e #content, ma in che modo collego questa vista di layout renderizzata all'html? – Abe