Angularjs angular.js-未调用evalAsync
在下面的jsFiddle中,我演示了一个让我深思的问题。它源于需要向所有作用域发送系统范围的事件,告诉它们系统已完成引导。 为了做到这一点,我在引导后获得了rootScope,并调用了它的evalAsync。唉!这不是执行 请看这里: 非常感谢您的任何想法或想法Angularjs angular.js-未调用evalAsync,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,在下面的jsFiddle中,我演示了一个让我深思的问题。它源于需要向所有作用域发送系统范围的事件,告诉它们系统已完成引导。 为了做到这一点,我在引导后获得了rootScope,并调用了它的evalAsync。唉!这不是执行 请看这里: 非常感谢您的任何想法或想法 Lior由于您的代码在Angular的“外部”运行,您需要在示例代码末尾调用rootScope.$digest()以运行摘要循环。然后将计算/执行$evalAsync()中的表达式 由于您的代码在Angular的“外部”运行,您需要在示
Lior由于您的代码在Angular的“外部”运行,您需要在示例代码末尾调用rootScope.$digest()以运行摘要循环。然后将计算/执行$evalAsync()中的表达式 由于您的代码在Angular的“外部”运行,您需要在示例代码末尾调用rootScope.$digest()以运行摘要循环。然后将计算/执行$evalAsync()中的表达式 Mark调用
$digest
函数是正确的,但还有一件事:您没有得到正确的根范围
angular.bootstrap
返回模块的喷油器,喷油器已经拉入'ng'
模块
.Mark调用
$digest
函数是正确的,但还有一件事:您没有得到正确的根范围
angular.bootstrap
返回模块的喷油器,喷油器已经拉入'ng'
模块
.谢谢@satchmorun。这就解决了问题。然而,这个问题有点更深。我使用TemplateURL,现在我看到链接函数被延迟,直到从服务器获取所有部分。由于$on侦听器注册发生在链接函数执行期间,因此执行之前的任何事件广播都不会到达$on。还不确定如何解决,但FYIthanks@satchmorun。这就解决了问题。然而,这个问题有点更深。我使用TemplateURL,现在我看到链接函数被延迟,直到从服务器获取所有部分。由于$on侦听器注册发生在链接函数执行期间,因此执行之前的任何事件广播都不会到达$on。还不确定如何解决,但仅供参考
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');
});