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']);
});