0

次の 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');
});

アイデアや考えをありがとう Lior

4

2 に答える 2

3

コードは Angular の「外部」で実行されているため、サンプル コードの最後で rootScope.$digest() を呼び出してダイジェスト サイクルを実行する必要があります。次に、$evalAsync() 内の式が評価/実行されます。

于 2013-02-20T20:48:37.960 に答える