Bonsoir à tous,
Je me suis récemment mis à AngularJs et il faut dire que l'on peu effectivement faire des applications complète en peu de temps.
Je fais face à un problème dont je n'ai cependant pas pu trouver de solutions, enfin il en existe bien au moins une mais je ne l'aime pas du tout.
Je suis en train de réaliser une application de vente, donc liste des produits, gestion du panier… et j'ai décidé de découper la gestion du panier de l'affichage des produits. J'ai donc un controller pour le panier et un controlleur pour la liste des produit.
Lorsque l'on va sur l'url /produits
dans la liste des routes définie dans angular c'est le controller des produits qui est appelé. Cependant, dans la vue de celui-ci j'inclus la vue du panier avec le controller de celui-ci afin de permettre au client de voir où il en est dans son panier avec un simple survol de la souris.
Lorsque l'on selectionne un produit, j'utilise la fonction $rootScope.$emit
pour que le controller des produits envoie un message au panier afin de tenir compte de l'ajout.
Jusqu'ici tout fonctionne bien, je me suis mis à développer une interface de gestion utilisant le gestionnaire de route d'angular et donc durant mes tests je passais de la page des produits à la page de gestion.
Et c'est là que le problème surviens, lorsque j'appuye sur un bouton, l'action n'était plus éxécuté 1 fois mais 2, 3 fois et plus encore.
J'ai pris du temps pour analyser d'où venais le problème mais j'ai finalement compris, c'est le fait de l'inclusion du controller panier dans la vue des produit avec la communication entre les deux.
Lorsque le controller des produits envoie un message il l'envoie bien qu'une seule fois, mais le controller panier le reçois autant de fois que je suis revenu sur la vue produits (donc que celui-ci à été chargé).
La seule solution que je suis parvenu à imaginer c'est fusionner le controller panier avec le controller produit… le problème c'est que le pannier est utilisé sur d'autre page… bref, à ce jeu là je suis parti pour finalement avoir toute mon application dans un seul controller et je dois dire que je trouve sa très décevant.
Quelqu'un aurai-t'il une idée de comment faire bien les choses afin de régler le problème ?
Merci d'avance pour votre aide.
Cordialement, La source.