[AngularJS] Formation - Texte conditionnel

Par rainbowishes, il y a 11 ans


Hello à tous,

Je suis encore novice en AngularJS et je viens de finir la formation de Grafikart. Une fois mon système de commentaires à peu près fini, et pour que tout soit bien propre, j'ai voulu modifier mon code afin d'afficher "commentaires" au pluriel s'il y en avait plus d'un, et au singulier sinon :

Mon controller comments.js :

app.controller('CommentsController', ['$scope', 'PostFactory', '$routeParams', function CommentsController($scope, PostFactory, $routeParams){ $scope.loading = true; $scope.newComment= {}; var post = PostFactory.get($routeParams.id).then(function(post){ $scope.loading = false; $scope.title = post.name; $scope.comments = post.comments; if (post.comments.length > 1){ post.txtcomment = "commentaires"; }else { post.txtcomment = "commentaire"; } }, function(msg){ alert(msg); }); $scope.addComment = function(){ this.comments.push($scope.newComment); this.newComment= {}; }; }]);

L'HTML :

<div ng-controller='PostsController'> <div ng-show="loading">Chargement...</div> <div ng-repeat="post in posts"> <h1>{{post.name}}</h1> <p>{{post.content}}</p> <a href="#/comments/{{post.id}}"><h2>{{post.comments.length}} {{post.txtcomment}}</h2></a> <hr> </div> </div>

Mon code fonctionne, mais de façon un tant soit peu... Etrange. En fait, le {{post.txtcomment}} que j'ajoute à mon objet ne s'affiche que si je clique sur le lien et que je reviens ensuite à ma home page, comme ceci :.

Quelqu'un saurait-il pourquoi ?
Je me dis que ça doit avoir un rapport avec le $scope dans lequel je suis, mais je n'en sais pas plus.

Merci pour vos réponses !

2 réponses

Maenhyr, il y a 11 ans

bonjour, il y a déjà un système de fait par angularjs.

regarde du côté de ngPluralize.

rainbowishes, il y a 11 ans

Merci prbaron, je m'étais complexifié la vie ! :)