在下面的jsFiddle我演示了一个让我思考的问题。它源于需要向所有范围发送系统范围的事件,告诉他们系统已完成引导。 为了做到这一点,我在bootstrapping之后获得了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');
});
非常感谢任何想法或想法
利奥尔
答案 0 :(得分:3)
由于您的代码在Angular“外部”运行,因此您需要在示例代码的末尾调用rootScope。$ digest()以生成摘要周期。然后将评估/执行$ evalAsync()内的表达式。
答案 1 :(得分:2)
Mark对于调用$digest
函数是正确的,但还有一件事:你没有获得正确的根范围。
angular.bootstrap
返回已插入'ng'
模块的模块的注入器。