Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs angular.js-未调用evalAsync_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Angularjs angular.js-未调用evalAsync

Angularjs angular.js-未调用evalAsync,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,在下面的jsFiddle中,我演示了一个让我深思的问题。它源于需要向所有作用域发送系统范围的事件,告诉它们系统已完成引导。 为了做到这一点,我在引导后获得了rootScope,并调用了它的evalAsync。唉!这不是执行 请看这里: 非常感谢您的任何想法或想法 Lior由于您的代码在Angular的“外部”运行,您需要在示例代码末尾调用rootScope.$digest()以运行摘要循环。然后将计算/执行$evalAsync()中的表达式 由于您的代码在Angular的“外部”运行,您需要在示

在下面的jsFiddle中,我演示了一个让我深思的问题。它源于需要向所有作用域发送系统范围的事件,告诉它们系统已完成引导。 为了做到这一点,我在引导后获得了rootScope,并调用了它的evalAsync。唉!这不是执行

请看这里:

非常感谢您的任何想法或想法
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');
});