2017-04-21 96 views
0

是否有可能添加回调被称为一个控制器已在角度被加载之后?我想听这样的事件以外的那个控制器!Angularjs加入控制器之后回调已被从外部控制器加载

我将我们的现有应用程序角度应用程序,我不希望修改其源文件。为此,我需要能够加载控制器并通过自定义功能增强其范围。然而,许多控制器不会在应用程序启动时加载,因此我需要能够在加载后立即拦截它们(例如在加载特定视图之后)并运行修改。

我怎样才能做到这一点,在不改变源文件的任何。所有更改和侦听器都必须从第三方代码添加。

示例代码:

awesome.js:

awesomeApp.controller('AwesomeController', ['$scope', function($scope) { 
    $scope.awesomeFunction = function... 
}]); 

punyIntegration.js

(function() { 
    $rootScope.$on('awesomeControllerHasBeenLoaded', function(controller) { 
    controller.scope.punyFunction = function... 
    }); 
})(); 
+0

Angularjs或Angular2?还请添加演示您尝试完成的代码。 –

+0

说话是算数的标题 – Konstantine

+0

然后将这些代码至少应该说同样的;-)标签不应该在标题虽然重复。 –

回答

0

通过听取$viewContentLoaded事件就可以实现这样的功能。但是要做到这一点任何页面上,而不是在一个特定的视图,你必须通过$rootScope像这样听:

$rootScope.$on("$viewContentLoaded", function($event, data) { 
    //at this point the view has been loaded 
    //and you have access to its scope (i.e the controller's scope) 
    //via angular.element(any selector).scope() 
}); 
+0

我相信作品。谢谢! – Konstantine