Voici quelques-unes des classes dans mon application JavaScript:Injection de dépendance en JavaScript? (Pour la visualisation guidée par les données)
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'interaction entre ces composants sont esquissés ci-dessous: (Désolé pour la mauvaise illus compétences ...;.))
ce que je suis à la recherche est un moyen propre pour passer les arguments nécessaires (gestion de la dépendance) aux sous-composantes du contrôleur de visualisation:
Disons que l'utilisateur change un indicateur dans l'affichage de visualisation . Le modèle demande au gestionnaire de données de charger les données nécessaires.
Lorsque les données sont chargées, le contrôleur de visualisation apprend au sujet du changement de modèle et devrait mettre à jour ses composants respectifs: Grille, Scatter, infobulles etc.
La grille a besoin de savoir des choses telles que Xmin, xMax, largeur, height ...
Le "Scatter renderer" nécessite également xMin, xMax, width, height. En outre, il doit avoir accès au singleton Big Data et doit trouver les parties des données à dessiner.
Trois questions:
Comment puis-je passer la source de données au moteur de rendu Scatter? Est-ce que je le déclare ou le passe?
De nombreux composants sont intéressés par les données disponibles à dessiner. Le gestionnaire de données pourrait répondre à cette requête. Le "dataAvailability" doit-il être transmis au rendu Scatter ou doit-il avoir le gestionnaire de données entier en tant que dépendance? En regardant le dessin schématique, comment disposeriez-vous les objets afin qu'un nouvel état (nouveaux indicateurs, année, sélection, largeur, hauteur) se propage facilement dans tous les sous-objets?
Merci :)
Utilisez-vous un cadre particulier JS ou d'une bibliothèque? Certains d'entre eux ont des caractéristiques qui aident précisément avec ce genre de choses. – hugomg
Comme il semble que vous ayez déjà écrit un peu de code, ce ne sera pas une réponse, mais vous pourriez envisager backbone.js pour de futurs projets de type JS MVC –
Je ne vois pas de contrôleur interagir avec votre modèle ... sauf si myApp.mode.controller est le contrôleur de visualisation –