angular.js - 未调用evalAsync

时间:2013-02-20 20:20:50

标签: angularjs angularjs-directive angularjs-scope

在下面的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');
});
非常感谢任何想法或想法 利奥尔

2 个答案:

答案 0 :(得分:3)

由于您的代码在Angular“外部”运行,因此您需要在示例代码的末尾调用rootScope。$ digest()以生成摘要周期。然后将评估/执行$ evalAsync()内的表达式。

答案 1 :(得分:2)

Mark对于调用$digest函数是正确的,但还有一件事:你没有获得正确的根范围。

angular.bootstrap返回已插入'ng'模块的模块的注入器。

Here's your fiddle, modified