簡體   English   中英

從外部控制器加載控制器后,AngularJS添加回調

[英]Angularjs adding callback after controller has been loaded from outside controller

是否有可能在將控制器加載到angular中之后添加要調用的回調? 我想從該控制器外部監聽這樣的事件!

我正在將我們的應用程序與現有的angular應用程序集成在一起,並且我不想修改其源文件。 為此,我需要能夠使用已加載的控制器並通過自定義功能增強其作用域。 但是,許多控制器在應用程序啟動時並未加載,因此我需要能夠在它們加載后立即攔截它們(例如,在加載特定視圖之后)並運行修改。

我怎樣才能做到這一點,在不改變任何的源文件。 必須從第三方代碼添加所有更改和偵聽器。

示例代碼:

awesome.js:

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

punyIntegration.js

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

通過監聽$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()
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM