AngularJS:对控制器中定义的函数的全局访问

时间:2014-06-12 02:29:51

标签: angularjs controller scope window

我有一个带有一些控制器的angularjs应用程序。

在某些时候,我需要访问控制器内定义的函数,但是函数将被调用的地方不在angularjs APP中。

我将尝试构建一个简单的场景:

app.controller('TaskController', function ($scope, $routeParams, $window, TaskEngine, PortalUtil) {

$scope.closeTask = function() {
    $scope.openTask = false;
    $scope.openedTaskUrl = undefined;
}

});

- 我的网络应用中的其他位置,在角度APP之外。

<button onclick="closeTask();">

&#34; closeTask()&#34;函数永远不可访问,因为它超出了范围。 我试图在窗口对象中定义它

$window.closeTask = function() {
    $scope.openTask = false;
    $scope.openedTaskUrl = undefined;
}

});

现在,我的功能可见,但变量&#34; openTask&#34;和&#34; openedTaskUrl&#34;不是。 有可能做我想要的吗? 基本上,我有一个控制器,我需要在任何地方访问一个函数,以控制菜单的行为。

谢谢!

1 个答案:

答案 0 :(得分:1)

我不会为此使用$ window。相反,Angular有一个很好的功能,它不允许Angular代码与它交互。使用Angular.element,您可以访问Angulars Scope中定义的数据或函数。

 var $scope = angular.element(document.querySelector('[ng-app=app]')).scope();
 $scope.$apply(function() {
    $scope.print("Hello world"); 
 });