Ответ 1
Марк прав о вызове функции $digest
, но есть еще одна вещь: вы не получаете правильную область корня.
angular.bootstrap
возвращает инжектор для модулей, которые уже втягиваются в модуль 'ng'
.
на следующем 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');
});
большое спасибо за любую идею или мысль Лиор
Марк прав о вызове функции $digest
, но есть еще одна вещь: вы не получаете правильную область корня.
angular.bootstrap
возвращает инжектор для модулей, которые уже втягиваются в модуль 'ng'
.
Поскольку ваш код работает "снаружи" из Angular, вам нужно вызвать rootScope. $digest() в конце кода примера, чтобы вызвать цикл дайджеста. Тогда выражение внутри $evalAsync() будет оценено/выполнено.