2015-01-06 28 views
6

Czytałem dokumentację najnowszej wersji (2.3.0) i mówi się, że obszary aplikacji są teraz przestarzałe.MarionetteJS: Regiony aplikacji a układy

Regiony aplikacyjne

Ostrzeżenie: przestarzałe Funkcja ta jest przestarzała. Zamiast korzystać z aplikacji jako katalogu głównego drzewa widoku, należy użyć widoku układu. Aby rozszerzyć widok układu na cały dokument, można ustawić jego el na "body". Może to wyglądać mniej więcej tak: var RootView = Marionette.LayoutView.extend ({el: 'body'});

W większości tutoriali, w tym Davida ŠULC książka Backbone Marionette: łagodne wprowadzenie go używa następującego fragmentu kodu, aby dodać regiony do aplikacji.

Zamiast poniższego przykładu poniżej, który używa addRegions, co mam robić zamiast tego?

tj

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

Odpowiedz

7

Użyć layoutview zamian.

Można to zrobić na przykład:

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

nigdy faktycznie dodać regiony do mojego app obiektu bezpośrednio.

+1

Czy widok układu można wyrenderować przed wywołaniem aplikacji app.start() lub czy należy ją wywołać wewnątrz procedury obsługi onStart? – Abe

+1

Renderowanie widoku układu jest synchroniczne, więc musisz się upewnić, że układ jest renderowany, zanim chcesz wyświetlić widoki w jego regionach. Poza tym możesz to zrobić, kiedy wolisz. Pamiętaj też, że możesz definiować regiony na podstawie elementów, które już znajdują się w DOM, jeśli chcesz utworzyć regiony, aby wyświetlać widoki w locie. – Trace

+0

Właściwie, skąd wiadomo, że załączony renderowany widok jest dołączany do DOM? Załóżmy, że mam szablon z elementami #menu i #content, ale jak faktycznie załączam ten renderowany widok układu do html? – Abe