11

Sto tentando di effettuare l'aggiornamento di una vista angular.js quando si aggiunge un commento. Il mio codice è il seguente:

<div class="comment clearfix" data-ng-repeat="comment in currentItem.comments" data-ng-class="{bubble: $first}" data-ng-instant> 
    <div> 
     <p> 
      <span class="username">{{comment.user}}</span> {{comment.message}} 
     </p> 
     <p class="time"> 
      10 minutes ago 
     </p> 
    </div> 
</div> 
<div class="comment reply"> 
    <div class="row-fluid"> 
     <div class="span1"> 
      <img src="assets/img/samples/user2.jpg" alt="user2" /> 
     </div> 
     <div class="span11"> 
      <textarea class="input-block-level addComment" type="text" placeholder="Reply…"></textarea> 
     </div> 
    </div> 
</div> 

il campo di applicazione è aggiornato immettere:

$('.addComment').keypress(function(e) { 
    if(e.which == 10 || e.which == 13) { 
     $scope.currentItem.comments.push({ 
      "user": "user3", 
      "message": $(this).val() 
     }); 
     console.debug("currentItem", $scope.currentItem); 
    } 
}); 

debug $ scope.currentItem mostra che il commento è stato aggiunto ad essa, tuttavia la vista non mostra la nuovo commento Sospetto che il $ scope sia guardato solo al suo primo livello e che questo è il motivo per cui la vista non si aggiorna. è questo il caso? Se sì, come posso ripararlo?

SOLUZIONE: Come Ajay ha suggerito nella sua risposta qui sotto ho avvolto la spinta array in funzione si applicano in questo modo:.

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

di controllo se il CSS applicato per il nuovo commento aggiunto è facendolo allontanare dallo schermo visualizzabile – dreamweiver

+0

grazie per il suggerimento, ma non è questo il caso, ho dato un'occhiata al codice HTML in firebug e il nuovo commento chiaramente non è stato aggiunto. – Dine

+0

ma nella tua domanda hai detto che durante il debug hai trovato che il commento è stato aggiunto. Cosa intendi con questo? – dreamweiver

risposta

18

modificare il codice per avvolgere dentro portata $ applicare perché si sta modificando la proprietà al di fuori l'angolo angolare si deve usare scope.$apply() per guardare i valori

+0

quando faccio questo :: $ scope. $ Apply (function() { $ scope.Images.push (dati); }); "Errore: [$ rootScope: inprog] $ digest già in corso" Arriva se rimuovo apply() allora si verifica lo stesso problema come menzione nella domanda. – Developer

+0

Penso che nel tuo caso sarebbe qualcosa di simile: $ scope.Images.push (dati); $ Portata applicare $().; ... – cbaigorri

0

Ho dovuto inserire il mio modulo all'interno dello stesso controller div come il ng-repeat. Ho avuto due controller div separati.

0

Utilizzare $ scope. $ Parent.arrayObjet per modificare le variabili padre anziché $ scope.arryaObject. Ha funzionato nel mio caso.

0
<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> 

Nel codice sto cancellando un record e aggiungere nuova riga di codice, ma tutte le righe vengono visualizzati nelle righe ng-repeat (compresi cancellato)

+0

Questo è quello che sta succedendo anche a me. Hai mai trovato una soluzione? –

Problemi correlati