Queste sono alcune delle classi nella mia applicazione JavaScript:Iniezione di dipendenza in JavaScript? (Per i dati-driven visualizzazione)
myApp.mode.model Handles the state
myApp.mode.controller Instantiates and updates components based on the model
myApp.data.dataManager Does operations on the dataSource
myApp.data.dataSource A big singleton with structured data
myApp.chart.grid A grid component
myApp.chart.scatter A scatter gram renderer
myApp.chart.tooltip A tooltip renderer
L'interazione tra questi componenti sono illustrate qui di seguito: (Ci scusiamo per la cattiva illus competenze ...;.))
Quello che sto cercando è un modo pulito per passare gli argomenti necessari (gestione delle dipendenze) per i sub-componenti del regolatore di visualizzazione:
Diciamo che l'utente modifica un indicatore sul display di visualizzazione . Il modello chiede al gestore dati di caricare i dati necessari.
Quando viene caricato i dati, il controllore di visualizzazione viene a conoscenza del cambio di modello e dovrebbero aggiornare i rispettivi componenti: griglia, dispersione, ecc Tooltips
La griglia deve sapere cose come Xmin, Xmax, larghezza, altezza ...
Anche il "Renderer di dispersione" richiede xMin, xMax, larghezza, altezza. Inoltre, ha bisogno di accedere al Big Data Singleton e ha bisogno di scoprire quali parti dei dati disegnare.
Tre domande:
Come faccio a passare il DataSource al renderer Scatter? Lo dichiaro o lo passo?
Molti componenti sono interessati ai dati disponibili da disegnare. Il gestore dati potrebbe rispondere a questa domanda. La "dataAvailability" deve essere passata al renderer di Scatter o dovrebbe invece avere l'intero data manager come dipendenza?
Osservando il disegno schematico, come definirei gli oggetti in modo che un nuovo stato (nuovi indicatori, anno, selezione, larghezza, altezza) si propagasse facilmente attraverso tutti gli oggetti secondari?
Grazie :)
Stai usando un particolare quadro JS o una libreria? Alcuni di loro hanno caratteristiche che aiutano proprio con questo tipo di cose. – hugomg
Dal momento che sembra che tu abbia già scritto un bel po 'di codice, questa non sarà una risposta, ma potresti prendere in considerazione backbone.js per futuri progetti di tipo JS MVC –
Non vedo un controller che interagisca con il tuo modello ... a meno che myApp.mode.controller non sia il controller di visualizzazione –