3 votes

Comment afficher des messages de retour d'information ou d'erreur dans une application dorsale ?

Je travaille sur une simple démonstration de concept CRUD avec Rails/Backbone/JST templating. J'ai pu trouver beaucoup d'exemples jusqu'à présent. Mais après de nombreuses recherches et lectures, je n'ai pas encore trouvé de bon exemple sur la façon de gérer ces scénarios :

  • message d'information : nouvel élément ajouté avec succès à la liste (affiché sur l'écran de la liste)
  • message d'information : l'élément a été supprimé de la liste avec succès
  • message d'erreur : problème avec l'entrée du/des champ(s)
  • message d'erreur au niveau du champ : problème avec l'entrée

Les objets Backbone sont les suivants Collection (de modèles "post") -> Modèle (objet "post") -> Vues Liste/Edition/Nouveau (et un modèle JST pour chacune de ces vues)

Je cherche donc une description de haut niveau de la manière dont je devrais organiser mon code et mes modèles pour atteindre le niveau de messagerie souhaité. Je sais déjà comment effectuer ma routine de validation sur les entrées du formulaire à chaque fois qu'elles changent. Mais je ne sais pas trop quoi faire des messages d'erreur maintenant que je les ai.

Voici l'approche que j'envisage. Je ne suis pas sûr qu'elle soit bonne :

  • Créer un modèle "Message", qui correspond à une "Vue", qui est une sous-vue (si c'est possible) de mes vues existantes. Cette vue/modèle peut afficher des messages et des erreurs au niveau de la page dans les trois premiers scénarios que je mentionne ci-dessus. Je ne sais pas si c'est faisable d'avoir une "sous-vue" et comment gérer le templating pour cela. Mais si c'est possible, les modèles parents pourraient inclure le sous-modèle "message". La vue du message pourrait afficher/masquer le sous-modèle en fonction de l'état du modèle de message. Faisable ? Stupide ?
  • Pour le quatrième scénario, la validation du modèle renverra un objet d'erreur avec des messages spécifiques pour chaque champ erroné chaque fois qu'un "model.set" est appelé par des changements de champs de formulaire. Je ne veux pas interrompre le "model.set" mais je veux afficher le(s) message(s) d'erreur à côté de chaque champ. Je voudrais savoir comment factoriser mon modèle edit/new et Post model/view de manière à ne pas violer le modèle MVC. C'est-à-dire que je ne veux pas mettre des références à des éléments DOM au mauvais endroit.

Désolé si c'est vague. Si vous avez envie de m'aider, faites-moi savoir quels extraits de code pourraient être utiles (ou d'autres détails) et je vous les fournirai.

5voto

Andreas Köberle Points 16453

Vous créez un bus d'événements global. Lorsqu'une erreur apparaît, vous déclenchez un événement. Votre vue qui doit afficher le message écoute les événements de ce bus d'événements. Ainsi, la vue du message d'erreur n'a pas besoin de connaître toute la collection et vice versa. Le bus d'événements est simple :

var eventBus = _.extend({}, Backbone.Events);

Ajoutez-le à votre collection et déclenchez-le à tout moment. add a été appelé :

var myCollection = Backbone.Collection.extend({
     initialize: function([],eventbus){
          this.bind('add', function(obj){eventbus.trigger('added', obj)}
      }
})

Consultez également l'article : http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X