Angular.js - evalAsync не вызывается

на следующем jsFiddle я демонстрирую проблему, которая заставляет меня задуматься. Это связано с необходимостью отправки системного события во все области, говоря им, что система завершила загрузку. Для этого я получил rootScope после начальной загрузки и назвал его evalAsync. Увы! его не выполняется.

см. здесь: http://jsfiddle.net/cusrC/8/

angular.element(document).ready(function() {
angular.bootstrap(body, ['app']);
var ngInjector = angular.injector(['ng']);

var rootScope = ngInjector.get('$rootScope');
var x = rootScope.$eval(function(scope) {   
        console.log('in eval');
        scope.$broadcast('onLoad'); 
        scope.$evalAsync(function(scope) {  
            console.log('in evalAsync');
            scope.$broadcast('onLoad'); 
        });
    });
console.log('x',x);
console.log('after');
});

большое спасибо за любую идею или мысль Лиор

Ответ 1

Марк прав о вызове функции $digest, но есть еще одна вещь: вы не получаете правильную область корня.

angular.bootstrap возвращает инжектор для модулей, которые уже втягиваются в модуль 'ng'.

Здесь ваша скрипка, измененная.

Ответ 2

Поскольку ваш код работает "снаружи" из Angular, вам нужно вызвать rootScope. $digest() в конце кода примера, чтобы вызвать цикл дайджеста. Тогда выражение внутри $evalAsync() будет оценено/выполнено.