Versteckt sich ein Blick in die Region-Manager, wenn eine andere Ansicht angezeigt wird
Ich bin mit der Marionette region-manager für die Verwaltung meiner Ansichten. Es gibt drei Regionen:
1] Top menu-region
2] Seitenleiste region
3] - Main-region ( die eigentliche Seite, die ändert sich ständig )
Je nach Aktionen auf dem top-Menü und die sidebar halte ich die änderung der view gerendert wird, die in die Wichtigsten Regionen mit App.MainRegion.show(view)
.
Nun, es gibt eine bestimmte Ansicht (persistView
), die einmal erbracht werden soll nicht geschlossen werden, es sei denn, der tab/browser schließen.
Natürlich kann ich nicht verwenden, die App.MainRegion.show(view)
hier für foll Gründe:
- Wenn die
show(persistView)
heißt die erste Zeit ist alles in Ordnung. - Wenn ich Sie verlassen den
show(otherview)
rufenclose()
vonpersistView
. Das ist nicht erforderlich.
Meine aktuelle Lösung ist:
- Haben eine neue region namens
persistRegion
knapp unterhalb dermainRegion
. persistView
wird immer gerendert werden in derpersistRegion
.- In der
onShow()
vonpersistView
, Verstecke ich diemainRegion
und zeigen Sie dasperistRegion
Den oben genannten arbeiten, aber ich denke, ist sehr hackish. Auch ich bin stecken, wenn nach Schritt 3] der Benutzer navigiert zu einer anderen Ansicht. Nun, wie sage ich persistView
sollte es verstecken sich und zeigen die mainRegion
?
Jede Hilfe wird sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich finde dein layout gut klingt, im Hinblick auf die mit einer region zu halten, die "persistent" - Sicht vs der Hauptansicht. Aber ich würde nicht lassen Sie diese beiden Regionen voneinander wissen oder versuchen, einander zu kontrollieren, die Anzeige. Stattdessen würde ich ein eigenes Objekt erstellen, die weiß, wie dies zu tun.
Dieses Objekt würde verantwortlich sein für das hören auf den richtigen Veranstaltungen aus den verschiedenen Ansichten und Regionen beteiligt. Dann wäre es zu ermitteln, welchen Regionen ein-und ausblenden.
Der Schlüssel ist, wie Sie ein-und ausblenden der Regionen, obwohl. Sie wollen nicht in der Nähe der Regionen und entfernen Sie die Ansichten in Ihnen - zumindest nicht die
persistRegion
. Was können Sie stattdessen tun, obwohl, isthide()
der regionel
persistRegion.$el.hide()
und
persistRegion.$el.show()
in der region
$el
Attribut wird nach einer Ansicht angezeigt, in der region oder nach dem Aufrufregion.ensureElement()
._ensureElement()
Kann ich empfehlen die Verwendung der reset () - Methode von Marionetten-Regionen, anstelle von aus-und einblenden der region-element.
Hier ist ein link zu den doc http://marionettejs.com/docs/v2.4.4/marionette.region.html#reset-a-region
=>Eine region kann jederzeit zurückgesetzt werden. Dies zerstört alle vorhandenen anzeigen
angezeigt wird, und löscht den Cache el. Das nächste mal die
region zeigt eine Ansicht, in der region el wird abgefragt
die DOM.
myRegion.reset();
Dies ist nützlich, wenn Sie Regionen sind wieder in Sicht
Instanzen und in unit-Tests.