J'ai un ui qui ressemble à ceci:Modèle MVP: faut-il découpler plusieurs présentateurs ou peut-il communiquer directement?
+--------+---------------+
| model1 | model details |
| model2 | here, |
| model3 | loaded as the |
| | user selects |
| | a model from |
| | the left. |
| | |
+--------+---------------+
J'utilise le MVP pattern pour conduire ce ui. Je simplifie beaucoup ici, mais pour diviser pour régner je voudrais diviser le Presenter en deux: un qui gère les gestes de l'utilisateur dans la vue sur la gauche (l'utilisateur change la liste des modèles dans cette vue , par exemple tri) et un autre présentateur qui gère les gestes de l'utilisateur dans la vue sur la droite (l'utilisateur change le modèle individuel dans cette vue). Pendant que le présentateur de gauche interagit avec la liste complète des modèles, le présentateur de droite interagit avec un seul modèle: celui que l'utilisateur sélectionne dans la liste de gauche. IOW l'ui est conduit de gauche à droite.
Après que l'utilisateur choisit (c.-à-clics) un modèle à gauche, mon implémentation actuelle ressemble (à peu près):
LeftPresenter.onModelClick = function(event) {
var model = this.getModelFromEvent(event);
this.view.setSelectedModel(model); // updates list widget on left
RightPresenter.setSelectedModel(model); // notify the other Presenter
}
RightPresenter.setSelectedModel = function(model) {
// lazy load the model from the db, and update the
// view when the model fires the "loadComplete" event
model.bind('loadComplete', this.view.setModel);
model.lazyLoad();
}
Voici la partie que je suis floue sur WRT le modèle MVP, ou tout Motif MVC GUI d'ailleurs:
- Est-ce qu'un ui peut être piloté par plusieurs présentateurs de ce type?
- Les diffuseurs multiples doivent-ils être découplés ou peuvent-ils communiquer directement entre eux comme indiqué ici?
Ma question se résume à: quelle est la meilleure façon d'indiquer RightPresenter
que l'utilisateur a sélectionné un modèle en vue de l » LeftPresenter
?