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()
});
});
di controllo se il CSS applicato per il nuovo commento aggiunto è facendolo allontanare dallo schermo visualizzabile – dreamweiver
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
ma nella tua domanda hai detto che durante il debug hai trovato che il commento è stato aggiunto. Cosa intendi con questo? – dreamweiver