Sto lavorando su una SPA che vorrei utilizzare più viste principali. Ecco il mio caso d'uso:Pagine master multiple Durandal
Ho un utente che ha una pagina di profilo. All'interno di quella pagina del profilo mi piacerebbe essere in grado di visualizzare un paio di viste diverse, ad es. dettagli, opere, informazioni di contatto, ecc. Ho bisogno di essere in grado di collegare in profondità a ciascuna di queste viste. Ciascuna di queste viste deve visualizzare i dati utente di base dalla vista di layout principale.
È a mia conoscenza che dovrei usare la compose per questo e ho un po 'di codice che sembra funzionare, tuttavia, voglio essere in grado di passare i dati dalla "shell secondaria" alla sottoview attuale . Sembra che i dati dello splat non siano passati al metodo di attivazione del submodelmodello.
Nel mio viewmodel "master" ho creato un osservabile chiamato activeView che contiene una stringa corrispondente a un submodelmodello (viewmodels/user/details). Ho poi una dichiarazione ad eliminazione diretta che è la seguente:
<!-- ko compose: {
model: activeView(),
activate: true
} --><!-- /ko -->
Come posso passare i dati alla visualizzazione sub? O c'è un modo migliore per farlo?
Grazie in anticipo!
L'applicazione che ho scritto questo comportamento richiede più di pochi oggetti utente. Durandal 2.0 ha introdotto "router figlio" che essenzialmente consente agli utenti di creare più shell annidate con un profondo supporto per il collegamento. Naturalmente i router per bambini erano la strada da percorrere per me. – mcottingham
Capito, queste due idee (routing e un datacontext dell'applicazione) funzionano insieme. Stai creando una SPA che si inizializza sul lato client e raramente esegue un post completo. Il valore che ottieni è riuscire ad avvicinare il tuo sviluppo a un'app desktop piuttosto che alla tradizionale app Web che utilizza postback completi. Ciò significa che è possibile creare un datacontext che salva gli oggetti in memoria. In questo modo non devi passare oggetti tra le viste, puoi semplicemente mantenere un datacontext globale e passare un ID all'interno della rotta usando parametri piuttosto che interi oggetti. – onzur