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
Réponse acceptée

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

regarde du côté de ngPluralize.

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