我有一个带有一些控制器的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;不是。 有可能做我想要的吗? 基本上,我有一个控制器,我需要在任何地方访问一个函数,以控制菜单的行为。
谢谢!
答案 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");
});