2

$rootScope手動でブートストラップするAngularモジュールがあります。イベントリスナーをアタッチするために取得しようとしてい$viewContentLoadedます。

ここに私のコードがあります:

angular.bootstrap(el, [appname]);
//////////////////////////// Fixing links
console.log('patching');
var $rootScope = angular.injector([appname]).get('$rootScope');
console.log($rootScope);// Scope { $id=139,  $root=Scope,  $$destroyed=false,  more...}
$rootScope.$on('$viewContentLoaded', function () {
    console.log('$viewContentLoaded');
});

スコープ$id=139を取得していますが、必要なときにイベントが発生しません。

$rootScopeモジュールのメインcontrolelrの内部を取得しようとすると、次のようになります:

console.log('myController',$rootScope);
Scope { $id=120,  $$childTail=Scope,  $$childHead=Scope,  more...}

私は$rootScopeID 120で取得しますか???

モジュール内のコントローラーにイベントをアタッチすると、イベントハンドラーは正常に機能します。

それで、私は何を間違っていますか?rootScopeコントローラーの外部でモジュールを正しく取得するにはどうすればよいですか?

私は複数のアプリ環境を持っていることに言及する必要があります。他のモジュールをロードしてブートストラップするメインモジュールがあり、この他のモジュールviewContentがコードを手動で追加せずにいつロードを終了したかを知りたいと思っています....

注:次の$rootScopeように取得できます:

var $rootScope = angular.element(el).scope().$root;

しかし、これは次の場合には機能しません$compileProvider.debugInfoEnabled(false);:(

4

1 に答える 1