Mon présentateur doit demander à l'utilisateur plus d'informations. Comment puis-je le brancher?

StackOverflow https://stackoverflow.com/questions/1049339

  •  20-08-2019
  •  | 
  •  

Question

Je travaille avec le modèle de vue passive. L'utilisateur clique sur un nouveau bouton de compte. La vue délègue la responsabilité au présentateur à l'aide d'appels de méthode sans paramètre.

Le problème est qu’il existe plusieurs types de comptes. L’utilisateur doit donc choisir celui qu’il souhaite créer. Comment résoudre ce problème?

  1. Créez un nouveau formulaire à partir de la vue, obtenez les informations nécessaires et exposez-les en tant que propriété afin que le présentateur puisse les récupérer. (Cela ignore la notion selon laquelle la vue ne devrait contenir aucune logique.)
  2. Créez et utilisez le nouveau formulaire à partir du présentateur. (Ceci lie le présentateur directement à un formulaire, ignorant le point entier de MVP)
  3. Créez le nouveau formulaire ailleurs et transmettez-le sous forme d'argument constructeur au présentateur ... ou à la vue.
  4. Oubliez cela et ajoutez un nouveau bouton pour chaque type de compte. (Il existe un certain nombre de types de comptes et cela encombrera l'interface utilisateur, mais qu'il en soit ainsi.)
  5. Je m'y prend mal et je dois repenser mon design. (Si tel est le cas, un coup de pouce dans la bonne direction serait apprécié.)
Était-ce utile?

La solution 4

Ma solution était différente de ce à quoi je m'attendais. J'ai changé le bouton sur lequel l'utilisateur a cliqué pour un DropDownMenuButton. Ensuite, j'ai passé une liste de chaînes de types de comptes à la vue qui remplit le menu déroulant. J'ai également créé un gestionnaire d'événements pour l'événement click de l'élément de menu déroulant, qui met à jour une propriété publique avec le nom de l'élément de menu puis délègue tout le reste à l'animateur.

Le présentateur doit simplement obtenir le nom de l'élément de menu de la propriété exposée, puis rechercher le type de compte dans un dictionnaire privé de types de compte en utilisant le nom du type de compte comme clé.

Autres conseils

Je créerais probablement une autre paire présentation / vue pour obtenir le type de compte. Alors soit

  • votre présentateur appelle l'autre présentateur directement pour afficher le nouveau formulaire ou
  • votre présentateur demande à son modèle le type de compte approprié. Le modèle sait qu'il doit demander ailleurs et invoque le & Quot; type de compte présentateur & Quot; ou même le " modèle de type de compte ".

Je pense que je choisirais la première option à moins que votre présentateur ne devienne trop lourd.

Je ne suis pas un expert du MVP, mais je le ferais en utilisant un délégué pour obtenir le type de compte depuis la vue. Le présentateur appelle le délégué dans la vue qui ouvre le & Quot; sélectionnez le type de compte & Quot; formulaire et renvoie le type de compte sélectionné lorsque l'utilisateur a sélectionné un type de compte et fermé le formulaire.

Si vous parlez d’une interface simple pour la sélection d’un type de compte, l’OMI dépend du nombre de types de compte. Je voudrais juste ajouter de nouveaux boutons pour chaque compte. Cependant, si vous avez beaucoup de types de comptes, j'aurais une liste déroulante avec la liste de tous les comptes possibles et le premier (celui que l'utilisateur voit en premier) est un type non valide ou non sélectionné. J'ajouterais également une étiquette indiquant & "Sélectionnez le type de compte pour créer &"; Puis appuyez une seule fois sur le bouton pour envoyer la valeur de la liste déroulante au modèle. Ainsi, si l'utilisateur clique simplement sur le bouton sans sélectionner un type de compte, le modèle valide le type et renvoie le problème à la vue (et la vue peut mettre en surbrillance la zone ou le texte en rouge). Cela empêcherait l'utilisateur de manquer la sélection du type de compte. Cette approche faciliterait également les tests unitaires.

Si vous parlez de chaque type de compte comportant différentes informations à renseigner, il vous faudra alors une vue et un présentateur différents pour chaque compte. (Ce serait ce dont vous avez besoin après que l'utilisateur sélectionne le type de compte)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top