Bonjour à tous,
Je crée actuellement un projet avec angularjs (1.6) et j'ai une question de bonne pratique.
J'ai un controller avec une fonction de chargement des mes commentaires (pour afficher une liste avec le titre par exemple) et une autre fonction qui charge un commentaire entièrement. Les commentaires viennent d'une API séparée.
J'ai donc un code qui ressemble à ça :
Côté view, j'ai ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 MonApp.controller('CommentaireController', ['$scope', '$http', function ($scope, $http) { $scope.toutCharger = function(){ //ici mon appel $http $scope.commentaires = retourApi.data; } $scope.chargerUnCommentaire = function(id){ //ici mon appel $http $scope.commentaire = retourApi.data; } }]);
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <div ng-controller="CommentaireController"> //affichage de la liste des commentaires avec un évènement ng-click=chargerUnCommentaire(id) </div> //ici plein de code html, d'autres controller etc ... <div ng-controller="CommentaireController"> //affichage du commentaire qui a été cliqué </div>
Le problème c'est que côté javascript, tout à l'air de bien se passer (log ok avec le retour du commentaire) mais la vue ne se rafraîchit pas.
J'ai vu d'autres posts qui disait de mettre tout dans la même div mais ce n'est pas possible (le design ne le permet pas, ou alors je met le controller sur tout le body), j'ai vu aussi de créer un autre controller, mais dans une logique de controller, les fonctions concernent les mêmes objets donc bon, faire un controller pour une fonction, ça me semble pas adapté.
Du coup, quelles est selon vous la bonne solution ?
Merci d'avance pour votre aide !
Partager