2013-03-28 11 views
9

Mam układ, ale nie mogę zdefiniować wszystkich jego regionów z góry, ponieważ nie są one znane.Dynamicznie dodawaj regiony do układu Marionette

Więc później na ItemView jest tworzony i chciałabym utworzyć nowy region w układzie przy użyciu identyfikatora widoku jako nazwą regionu, więc mogę wtedy powiedzieć:

layout.dynamicRegionName.show(newItemView); 

Ale jest cykliczną zależność tutaj.

  1. Nie renderowane widok jeszcze, więc nie mogę zrobić odnośnik do elementu DOM być stosowane w wezwaniu layoutu do .addRegion()

  2. nie mogę uczynić go właśnie dlatego, Chcę, żeby przywiązywać do drzewa DOM przez dynamicznie dodanej regionu poprzez wywołanie .Show()

@DerickBailey w docs Marionette.Layout w github wierzę, że jest to błąd w przykładzie, który ma : layout.show(new MenuView());

ale technicznie jest to blisko do czego musimy tutaj to, aby móc zrobić:

layout.addRegion(VAR_WITH_NEW_REGION_NAME, aViewInstance); 

i mieć ten dodatek nowy region w układzie utylizacyjnej wewnątrz niego bezpośrednio instancja widok.

Czy brakuje mi innego oczywistego sposobu, aby to osiągnąć? Czy to znana brakująca funkcja? Czy jest jakiś powód, żeby go nie mieć?

Jestem świadomy tego poprzedniego pytania: "Dynamically add/remove regions to a layout" , ale nie widzę żadnej jasnej/określonej odpowiedzi na to pytanie.

Odpowiedz

19

Marionetka v1.0 (wersja 1.0.2 jest najnowsza, teraz) obsługuje dynamiczne regiony w układach.


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

Przydatna odpowiedź. Moje pytanie jest następujące. Czy element (# some-element) musi znajdować się w szablonie, czy nie? Innymi słowy, czy szablon zawiera ten element, czy metoda addRegion dodaje je do mnie? Zobacz moje pytanie dotyczące tego http://stackoverflow.com/questions/20570284/creating-a-layout-that-accepts-a-vierble-number-of-views-and-hence-regions –

+0

Tak, szablon musi zawierać el. Więc addRegion jest trochę dziwny: -/ –

+0

Nie jest tak naprawdę "dziwny". Region to kontener, który otacza dany element. Podobnie, gdy usuniesz region, nie usuniesz elementu DOM, tylko obiekt regionu. – backdesk

Powiązane problemy