Są to tylko niektóre z zajęć w mojej aplikacji javascript:Wstrzyknięcie zależności w JavaScript? (Dla danych opartych na wizualizacji)
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
Interakcja pomiędzy tymi składnikami są zarysowane poniżej: (Przepraszam za złe Illus umiejętności ...;).)
Co szukam jest czysty sposób przekazać niezbędne argumenty (zarządzanie zależność) do podkomponenty regulatora wizualizacja:
Załóżmy, że użytkownik zmienia wskaźnik na wyświetlaczu Wizualizacja . Model prosi menedżera danych o załadowanie niezbędnych danych.
Gdy dane są ładowane, kontroler Wizualizacja dowiaduje się o zmianie modelu i powinien aktualizować swoje odpowiednie komponenty Grid, scatter, podpowiedzi itp
Siatka musi wiedzieć takie rzeczy jak Xmin, Xmax, szerokość, wysokość ...
"Rozproszone renderowanie" również potrzebuje xMin, xMax, szerokość, wysokość. Ponadto potrzebuje dostępu do big data singleton i musi dowiedzieć się, jakie części danych należy narysować.
Trzy pytania:
Jak mogę przekazać źródło danych do renderowania punktowy? Czy deklaruję je lub przekazuję?
Wiele komponentów jest zainteresowanych dostępnymi danymi do narysowania. Menedżer danych może odpowiedzieć na to zapytanie. Czy "DataAvailability" powinien zostać przekazany do renderera Scatter, czy zamiast tego powinien mieć cały menedżer danych jako zależność?
Patrząc na schematyczny rysunek, w jaki sposób rozmieściłbyś obiekty, aby nowy stan (nowe wskaźniki, rok, wybór, szerokość, wysokość) był łatwy do propagacji w dół przez wszystkie sub-obiekty?
Dzięki :)
używasz konkretnej ramy JS lub biblioteki? Niektóre z nich mają funkcje, które pomagają właśnie w tego typu rzeczach. – hugomg
Ponieważ wygląda na to, że napisałeś już całkiem sporo kodu, to nie będzie odpowiedź, ale możesz rozważyć backbone.js dla przyszłych projektów typu JS MVC –
Nie widzę kontrolera współdziałającego z twoim modelem ... chyba że myApp.mode.controller jest kontrolerem wizualizacji –