12
votes

Angular.js Voir ne met pas à jour lors de la mise à jour de $

J'essaie de faire une vue angular.js la mise à jour elle-même lors de l'ajout d'un commentaire. Mon code est le suivant:

var el=$(this);
$scope.$apply(function () {
     $scope.currentChallenge.comments.push({
         "user": $scope.currentUser,
         "message": el.val()
     });
});


7 commentaires

Vérifiez si le CSS appliqué pour le nouveau commentaire ajouté est la cause de l'éloignement de l'écran visible.


Merci pour la suggestion, mais ce n'est pas le cas, j'avais un coup d'œil au HTML en Firebug et que le nouveau commentaire n'a clairement pas été ajouté.


Mais dans votre question, vous avez dit lorsque vous avez trouvé que vous avez trouvé que le commentaire a été ajouté .Qu'entendez-vous par là?


enveloppez l'appelant à l'intérieur de $ de portée.Appliquez () alors cela fonctionnera


Merci Ajay, j'ai donné cela un essai et ça marche comme un charme! Merci beaucoup! Si vous avez envie de le mettre dans une réponse et de l'expliquer un peu, je peux accepter votre réponse.


Dreamweiver, je voulais dire que j'ai débogué "$ étendue.currentitem" dans le contrôleur et le nouveau message était là après avoir appuyé sur Entrée, mais cela n'avait pas été ajouté à la vue HTML.


@Dine quand je fais ceci :: $ portée. $ Apply (fonction () {$ portée.images.push (données);}); "Erreur: [$ Rootscope: Ingrog] $ Digest déjà en cours" vient si je supprimais le document applicable (), le même problème se produit comme mention dans la question.


4 Réponses :


18
votes

Modifiez le code pour envelopper la portée intérieure. $ Appliquer parce que vous modifiez la propriété en dehors de la portée angulaire, vous devez utiliser portée. $ Appliquer () pour regarder les valeurs


2 commentaires

quand je fais ceci :: $ portée. $ Apply (fonction () {$ scope.images.push (données);}); "Erreur: [$ Rootscope: Ingrog] $ Digest déjà en cours" vient si je supprimais le document applicable (), le même problème se produit comme mention dans la question.


Je pense que dans votre cas, ce serait quelque chose comme: $ étendue.images.push (données); $ portée. $ Apply (); ...



0
votes

Je devais placer ma forme à l'intérieur du même contrôleur DIV que la répétition NG. J'ai eu deux contrôleurs de div des Div distincts.


0 commentaires

0
votes

Utilisez $ Portée. $ PARENT.ARRAYOBJET Pour modifier les variables parent au lieu de $ de portée.arryaObject. Cela a fonctionné dans mon cas.


0 commentaires

0
votes
<div class="col-sm-12 col-lg-12">
            <div class="outer-container">
                <div class="inner-container">
                    <div class="table-header">
                        <form id="teamForm" name="teamForm">
                            <table class="table table-bordered">
                                <thead>

                                <!-- Grid header -->
                                <tbody data-ng-if="(allTeamMembers.length==0)">
                                    <tr>
                                        <td class="text-center height_33_p" colspan="15"> {{noResultFound}} </td>
                                    </tr>
                                </tbody>
                                <!-- Existing team member -->

                                <tbody data-ng-repeat="tm in teammemberDetailsArryobject|orderBy:orderByField:reverseSort" data-ng-form="innerForm_$index" data-ng-class="{'ng-submitted':innerForm_$index.$submitted}">
                                    <tr></tr>
                                    </tbody>
In the code I am deleting one record and add new row programmatically but all the rows are displayed in the ng-repeat rows(including deleted)

1 commentaires

C'est ce qui me passe aussi. Avez-vous déjà trouvé une solution?