在控制器加载到角度后,是否可以添加一个被称为的回调?我想从外部那个控制器听这样的事件!
我正在将我们的应用程序与现有的角度应用程序集成,我不想修改其源文件。为此,我需要能够使用自定义功能来加载控制器并增强其范围。但是,许多控制器没有在应用程序启动时加载,因此我需要能够在加载它们之后立即拦截它们(例如,在加载特定视图之后)并运行修改。
如何在不更改任何源文件的情况下实现这一目标。必须从第三方代码添加所有更改和侦听器。
示例代码:
awesome.js:
awesomeApp.controller('AwesomeController', ['$scope', function($scope) {
$scope.awesomeFunction = function...
}]);
punyIntegration.js
(function() {
$rootScope.$on('awesomeControllerHasBeenLoaded', function(controller) {
controller.scope.punyFunction = function...
});
})();
答案 0 :(得分:0)
通过收听$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()
});
进行收听,如下所示:
public static List<int> RemoveSmallest(List<int> numbers)
{
var lowestIndex = -1;
var lowest = Int32.MaxValue;
for (var i = 0; i < numbers.Count; i++)
{
if (numbers[i] < lowest) {
lowest = numbers[i];
lowestIndex = i;
}
}
var newList = new List<int>(numbers);
newList.RemoveAt(lowestIndex);
return newList;