Ich verwende den Manager der Marionette-Region, um meine Ansichten zu verwalten. Es gibt drei Hauptregionen: 1] Oberer Menübereich 2] Seitenleistenbereich 3] Hauptregion (die aktuelle Seite, die sich ständig ändert)
Abhängig von den Aktionen im oberen Menü und der Seitenleiste ändere ich die Ansicht, die in den Hauptregionen mit App.MainRegion.show(view)
gerendert wird.
Nun gibt es eine bestimmte Ansicht ( persistView
), die einmal gerendert nicht geschlossen werden sollte, es sei denn, die Registerkarte / der Browser ist geschlossen.
Natürlich kann ich das App.MainRegion.show(view)
hier aus folgenden Gründen nicht verwenden:
show(persistView)
das erste Mal aufgerufen wird, ist alles in Ordnung. show(otherview)
close()
auf. Was nicht erforderlich ist. Meine aktuelle Lösung ist:
persistView
knapp unter der persistRegion
. mainRegion
wird immer in persistView
. persistRegion
von onShow()
verstecke ich die persistView
und zeige die mainRegion
Das obige funktioniert, aber ich denke, ist sehr hackish. Auch ich bin fest, wenn nach Schritt 3] der Benutzer zu einer anderen Ansicht navigiert. Wie kann ich peristRegion
sagen, dass es sich verstecken soll und persistView
anzeigen?
Jede Hilfe wird sehr geschätzt.
Ich denke, Ihr Layout klingt gut, in Bezug auf eine Region, die die "persistente" Ansicht gegenüber der Hauptansicht enthält. Aber ich würde nicht zulassen, dass diese beiden Regionen voneinander erfahren oder versuchen, sich gegenseitig zu kontrollieren. Stattdessen würde ich ein separates Objekt erstellen, das weiß, wie das geht.
Dieses Objekt würde dafür verantwortlich sein, die richtigen Ereignisse aus den verschiedenen Ansichten und Regionen zu hören. Dann würde es bestimmen, welche Regionen angezeigt und versteckt werden sollen.
Der Schlüssel liegt darin, wie Sie die Regionen anzeigen und ausblenden. Sie möchten nicht die Regionen schließen und die Ansichten in ihnen entfernen - zumindest nicht die persistRegion
. Was Sie stattdessen tun können, ist hide()
der Region el
persistRegion.$el.hide()
und
persistRegion.$el.show()
Das Attribut $el
der Region ist verfügbar, nachdem eine Ansicht in der Region angezeigt wurde oder nachdem Sie region.ensureElement()
aufgerufen haben.
Ich kann vorschlagen, die Methode reset () aus Marionettenregionen zu verwenden, anstatt das Element der Region zu verstecken und anzuzeigen. Hier ist ein Link zum Dokument Ссылка = & gt; Eine Region kann jederzeit zurückgesetzt werden. Dies zerstört jede vorhandene Ansicht wird angezeigt und löscht das zwischengespeicherte el. Das nächste Mal das Region zeigt eine Aussicht, die Region El ist abgefragt das DOM.
myRegion.reset (); Dies ist nützlich, wenn Regionen in der Ansicht wiederverwendet werden Instanzen und in Unit-Tests.
Tags und Links backbone.js marionette