Javascript 角度:将$viewContentLoaded附加到手动引导的应用程序
我有一个手动引导的angular模块。我正在尝试让它的Javascript 角度:将$viewContentLoaded附加到手动引导的应用程序,javascript,angularjs,module,rootscope,Javascript,Angularjs,Module,Rootscope,我有一个手动引导的angular模块。我正在尝试让它的$rootScope为$viewContentLoaded附加一个事件侦听器 这是我的密码: angular.bootstrap(el, [appname]); //////////////////////////// Fixing links console.log('patching'); var $rootScope = angular.injector([appname]).get('$rootScope'); console.log
$rootScope
为$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');
});
我得到了一个scope$id=139
,事件没有在应该触发的时候触发
如果我试图在模块主控件中获取$rootScope
,我会得到:
console.log('myController',$rootScope);
Scope { $id=120, $$childTail=Scope, $$childHead=Scope, more...}
我得到一个id为120的$rootScope
如果我将事件附加到模块内部的控制器上,事件处理程序就会正常工作
那么我做错了什么?
如何获得控制器外部模块的正确rootScope
我应该提到,我有一个多应用程序环境。我有一个加载和引导其他模块的主模块,我试图知道其他模块viewContent何时完成加载,而不向每个模块手动添加代码
注:
我可以像这样获得$rootScope
:
var $rootScope = angular.element(el).scope().$root;
但是当
$compileProvider.debugInfoEnabled(false)时,这不起作用代码>:(好的,如果有人感兴趣的话,下面是我的结论:
(function (angular) {
var origMethod = angular.module;
angular.module = function (name, reqs, configFn) {
var module = origMethod(name, reqs, configFn);
module.run(function ($rootScope) {
//////////////////////////// Fixing links
$rootScope.$on('$viewContentLoaded', function () {
___fixLinks($('[ng-view],ng-view,.ng-view','[ngg-app="' + name + '"]'));
});
});
return module;
};
})(angular);