2017-04-21 90 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