Sto tentando di impostare un orologio in AngularJS e sto chiaramente facendo qualcosa di sbagliato, ma non riesco a capirlo. L'orologio si attiva nel caricamento immediato della pagina, ma quando cambio il valore osservato non spara. Per la cronaca, ho anche impostato l'orologio su una funzione anonima per restituire la variabile osservata, ma ho gli stessi esatti risultati.
Ho seguito un esempio minimale, facendo tutto nel controller. Se fa la differenza, il mio codice attuale è collegato alle direttive, ma entrambi stanno fallendo nello stesso modo. Mi sento come se ci fosse qualcosa di fondamentale che mi manca, ma non lo vedo.
HTML:
<div ng-app="testApp">
<div ng-controller="testCtrl">
</div>
</div>
JS:
var app = angular.module('testApp', []);
function testCtrl($scope) {
$scope.hello = 0;
var t = setTimeout(function() {
$scope.hello++;
console.log($scope.hello);
}, 5000);
$scope.$watch('hello', function() { console.log('watch!'); });
}
Le opere di timeout, hello
incrementi, ma l'orologio non sparare.
Demo a http://jsfiddle.net/pvYSu/
L'uso di 'setTimeout' era solo per l'esempio. '. $ apply()' era quello che mi mancava nel mondo reale. Grazie! –