2012-01-07 13 views
10

Come si organizzano le classi del modello di visualizzazione? Classi separati o uno gigante (e come modulare il gigante)? Come passare tra "pagine" (con dati caricati con ajax ovviamente)? Come caricare i modelli per backbonejs dopo il caricamento della pagina? Esempi e tutorial sarebbero apprezzati a condizione che siano più avanzati di quelli sul loro sito.Come creare un'app per singola pagina con knockout.js?

+1

In attesa di alcune risposte qui. – Domenic

risposta

10

Wow, molte domande sono state raggruppate in una sola. Cercherò di colpirli qui, ma un disclaimer che sto scrivendo un intero corso per Pluralsight su Knockout ... quindi non posso entrare nel profondo hai bisogno di una casella di commento :)

1) Come organizzi le classi vista modello?

Penso che intendiate le classi del modello di visualizzazione. Raccomando di creare un modello di visualizzazione che contenga tutte le proprietà e i metodi richiesti dalla pagina. Metti il ​​modello di vista in un contenitore e mantieni tutto quel javascript nel proprio file. Ad esempio, se hai la pagina customers.html per la tua struttura, potresti avere customers.js per il tuo modello di visualizzazione.

2) Classi separate o uno gigante (e come modulare il gigante)?

Ogni modello di vista è nel proprio file. Generalmente 1 modello di vista per file js (ma si potrebbero certamente inserire file interrelati nello stesso file). Inoltre, generalmente 1 modello di vista per visualizzazione (ma, in alcuni casi, è possibile andare oltre in alcuni casi).

Per i modelli è possibile crearli tutti in un unico file di modelli, se lo si desidera, o inserirli in file separati. Per le app più piccole mi piacciono 1 file models.js dato che la maggior parte dei modelli sono piuttosto semplici, piccoli e contengono proprietà semplici (anche se osservabili). Ma qui, è davvero una questione di scelta.

3) Come passare da una pagina all'altra?

Il meccanismo non è specifico per Knockout, quindi è possibile utilizzare collegamenti o anche controlli personalizzati (menu, schede, ecc.). La tua chiamata. Una volta deciso come navigare verso una pagina diversa, presumo che sia necessario passare i dati tra il 2 per il contesto. Un modo per farlo è nella query querystring con un ID, un altro modo è l'archiviazione locale (per gli oggetti più grandi che è necessario memorizzare in il cliente), o ci sono anche altre opzioni. Di nuovo, dipende davvero da cosa devi passare tra le pagine. Molte volte ho progettato le pagine per essere autosufficiente quindi non ho bisogno di passare molto tra di loro. Per quello che devo passare, cerco di inviare il meno possibile e cercare i dati in base ai tasti (nelle chiamate Ajax o nella memoria locale ... ovunque i dati siano presenti).

Spero che questo aiuti un po '.

UPDATE: Here is the link I mentioned to my Knockout.js course on Pluralsight

+0

Grazie per la risposta! Giusto per chiarire, pensi che sia meglio avere un modello di visualizzazione con un ko.applyBindings per ogni 'pagina' (tra virgolette dato che si tratta di un'applicazione singola, ma sai, ogni vista unica)? – sdfadfaasd

+1

Sembra che potresti avere una pagina in cui ci sono più "regioni" (o mini viste) sulla pagina. In quel caso potresti guardarlo come hai molte viste, e ognuna di quelle viste ha un modello di vista .... poi c'è un modello di vista principale/genitore per l'intero set di modelli di vista. Ma sto facendo un sacco di ipotesi qui. Si consiglia di iniziare con un modello di visualizzazione principale per l'applicazione per singola pagina e di iniziare ad aggiungere ulteriori modelli di visualizzazione secondaria secondo necessità. –

Problemi correlati