Ich arbeite an einem SPA, das ich mehrere Masteransichten verwenden möchte. Hier ist mein Anwendungsfall:Durandal Mehrere Masterseiten
Ich habe einen Benutzer, der eine Profilseite hat. Innerhalb dieser Profilseite möchte ich einige verschiedene Ansichten anzeigen können, z. Details, Arbeiten, Kontaktinformationen usw. Ich muss in der Lage sein, eine tiefe Verbindung zu jeder dieser Ansichten herzustellen. Jede dieser Ansichten muss die grundlegenden Benutzerdaten aus der Hauptlayoutansicht anzeigen.
Es ist mein Verständnis, dass ich Compose für diese verwenden sollte und ich habe ein wenig Code, der scheint zu arbeiten, aber ich möchte in der Lage sein, Daten von der "sekundären Shell" bis zur tatsächlichen Unteransicht übergeben . Es scheint, dass die Splat-Daten nicht an die Aktivierungsmethode des Unteransichtsmodells weitergegeben werden.
In meinem "Master" ViewModel habe ich ein Observable namens activeView erstellt, das eine Zeichenkette enthält, die einem Sub ViewModel entspricht (viewmodels/user/details). Ich habe dann eine Knockout-Anweisung, die wie folgt lautet:
Wie kann ich Daten an die Unteransicht übergeben? Oder gibt es einen besseren Weg, dies zu tun?
Vielen Dank im Voraus!
Die Anwendung, die ich benötigt mehr als nur Benutzerobjekte dieses Verhalten schrieb. Durandal 2.0 führte "Kind-Router" ein, die es Benutzern ermöglichen, mehrere verschachtelte Shells mit Deep-Linking-Unterstützung zu erstellen. Natürlich Kinderrouter waren der Weg für mich. – mcottingham
Verstanden, diese beiden Ideen (Routing und ein Anwendungsdatenkontext) arbeiten zusammen. Sie erstellen ein SPA, das sich auf der Clientseite initialisiert und selten einen vollständigen Post zurückgibt. Der Wert, den Sie erhalten, besteht darin, dass Sie Ihr Entwicklungssimulator eher an eine Desktop-App als an die herkömmliche Web-App, die vollständige Postbacks verwendet, herantreten. Dies bedeutet, dass Sie einen Datenkontext erstellen können, der Objekte im Speicher speichert. Auf diese Weise müssen Sie keine Objekte zwischen Ansichten übergeben. Sie können lediglich einen globalen Datenkontext pflegen und eine ID innerhalb der Route mit Parametern anstelle von ganzen Objekten weitergeben. – onzur