2013-03-28 10 views
9

Ich habe ein Layout, aber kann nicht alle seine Regionen im Voraus definieren, weil sie nicht bekannt sind.Dynamisch Regionen zu Marionette Layout hinzufügen

So später auf einem ItemView erstellt wird, und ich möchte eine neue Region im Layout erstellen die ID der Ansicht verwendet als Name der Region, so kann ich dann sagen:

layout.dynamicRegionName.show(newItemView); 

Aber es gibt zyklische Abhängigkeit Hier.

  1. Ich habe nicht die Ansicht, die noch gemacht, so kann ich nicht einen Hinweis auf sein DOM-Element mache in dem Aufruf des Layouts verwendet werden, um .addRegion()

  2. ich es nicht machen kann, gerade weil ich will es die DOM-Struktur durch die dynamisch hinzugefügt Region durch den Aufruf seine .show()

@DerickBailey in der Marionette.Layout docs in github ich glaube, es ist ein Fehler in dem Beispiel angebracht werden, der hat : layout.show(new MenuView());

aber technisch ist diese Nähe zu dem, was wir hier brauchen würde, das heißt der Lage sein, zu tun:

layout.addRegion(VAR_WITH_NEW_REGION_NAME, aViewInstance); 

und haben damit eine neue Region in das Layout eingefügt innen direkt die View-Instanz zu machen.

Vermische ich einen anderen offensichtlichen Weg, dies zu erreichen? Ist das eine bekannte fehlende Funktionalität? Gibt es einen Grund, es nicht zu haben?

Ich bin mir dieser vorherigen Frage bewusst: "Dynamically add/remove regions to a layout" aber sehe keine klare/definitive Antwort darauf.

Antwort

19

Marionette v1.0 (v1.0.2 ist aktuell, aktuell) unterstützt dynamische Bereiche in Layouts.


var MyLayout = Marionette.Layout.extend({ 
    template: "#some-template" 
}); 

var layout = new MyLayout(); 
layout.render(); 

layout.addRegion("someRegion", "#some-element"); 

layout.someRegion.show(new MyView()); 
+2

Hilfreiche Antwort. Meine Frage ist die folgende. Muss das Element (# some-element) innerhalb der Vorlage liegen oder nicht? Mit anderen Worten, enthält die Vorlage dieses Element oder hängt die addRegion-Methode es für mich an? Siehe meine Frage dazu http://stackoverflow.com/questions/20570284/creating-a-layout-that-accepts-a-variable-number-of-views-and-hence-regions –

+0

Ja, die Vorlage muss enthalten der el. So addRegion ist irgendwie komisch: -/ –

+0

Nicht wirklich "komisch". Eine Region ist ein Container, der nur ein bestimmtes Element umschließt. Wenn Sie eine Region entfernen, wird das DOM-Element nicht entfernt, sondern nur das Region-Objekt. – backdesk

Verwandte Themen