2012-02-15 3 views
0

Dans le projet j'utilise le modèle MVP. J'ai 2 vue et 2 présentateurs correspondants. De "Presenter2" je veux obtenir la valeur sélectionnée dans "View1". Quelle est la meilleure façon de le faire? Je sais qu'il vaut mieux utiliser le bus d'événements. Mais donc je dois créer 2 événements et 2 gestionnaires d'événements (1er événement va augmenter lorsque Presenter2 besoin de valeur sélectionnée de View1, et il sera traité en Presenter1. 2ème événement va augmenter en Presenter1 (comme: new selectedValueEvent(value) pour notifier Presenter2 sur la valeur sélectionnée. Presenter2 traitera selectedValueEvent(value) et obtiendra value)GWT MVP. Comment utiliser le bus d'événement?

Répondre

1

Si le présentateur doit obtenir la valeur sélectionnée lorsque l'utilisateur fait une action, vous ne pourrez pas utiliser un événement (les deux présentateurs pourraient peut-être réagir au même événement, donc pas besoin d'en utiliser deux différents?)

Si on sait quand le présentateur doit obtenir la valeur (une étape définie dans un travail flux), vous pouvez à elle comme ceci:

Gardez une référence aux vues dans le ClientFactory:

public class ClientFactoryImpl implements ClientFactory { 
    private static final EventBus eventBus = new SimpleEventBus(); 
    /* The views */ 
    private static final SampleView sampleView = new SampleView(); 
    .... 

    public ClientFactoryImpl(){ 
     eventBus.addHandler(ReleaseAddedEvent.type, sampleView); 
     .... 
    } 


    // getter and setters 
} 

Ainsi, dans le présentateur, vous pouvez obtenir une référence à la vue: SampleView view = MyEntryPoint.getClientFactory().getSampleView(); et vous pouvez juste appelle une méthode de la vue qui renvoie la valeur sélectionnée.

+0

Oui, dans mon application j'utilise clientFactory. Et maintenant cela a fonctionné comment vous avez écrit (obtenir un autre (ne correspondant pas à ce présentateur) Voir et appeler sur cette méthode View getSelected()) Mais je pense que créer une référence dans Presenter n'est pas une bonne idée .. Ou pas? – MyTitle

+0

Si vous créez simplement une référence locale dans une méthode dans le présentateur, cela ne devrait pas poser de problème car la référence locale n'existe que tant que cette méthode est exécutée. – steffinchen

+0

oui, j'ai créé variable locale) ok, merci)) – MyTitle

Questions connexes