Promises and $apply()
by rtcherry
HTML
<script src="http://code.jquery.com/jquery-1.6.4.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
<div ng-controller="TestCntrl">Item: {{item}}</div>
JavaScript
var testApp = angular.module('testApp', []);
testApp.controller('TestCntrl', ['$scope', '$q', '$timeout', function($scope, $q, $timeout) {
var deferred = $q.defer();
setTimeout(function() { deferred.resolve('Test Data!'); }, 1000);
setTimeout(function() { console.log('Failure'); $scope.$apply(); }, 10000);
setTimeout(function() {
console.log($scope.$root.$$phase);
confirm('Apply?') ? console.log('Applying') || $scope.$apply() : console.log('Not applying...');
console.log($scope.$root.$$phase);
}, 2000);
// $timeout(function() { console.log('I did something...'); }, 1050);
deferred.promise.then(
function(data) {console.log('Start Then');
$scope.item = data;
console.log('End Then');
return data;}) ;
$scope.item = 'Nothing';
}]);
angular.element(document).ready(function () {
angular.bootstrap(document, ['testApp']);
});