1

现在我有一些处理 angularjs 的经验我经常想知道如何在整个应用程序中拥有全局函数(在许多控制器中常用)可访问性。我的问题是$scope只能在其控制器中访问,我可以想象一个将这些函数添加到$rootScope的解决方案,但是现在我只向$rootScope添加了变量,我不知道如何添加函数,特别是在哪里去做。

4

2 回答 2

3

如果您在控制器上使用它,似乎是Service的候选者。定义后,您可以使用依赖注入在控制器中使用它。

这是使用服务的最简单的片段,但还有其他定义它们的方法。他们在这里得到了很好的解释

var myApp = angular.module('myApp', []);

//define service
myApp.service('helloWorld', function() {
    this.sayHello = function() {
        return "Hello World!"
    };
});

//inject the service
function MyCtrl($scope, helloWorld) {
    alert(helloWorld.sayHello());
}
于 2013-09-19T09:13:40.177 回答
1

您可以使用注入到任何需要上述功能的控制器中的服务。但是,如果您更喜欢在 上定义函数,则$rootScope可以执行以下操作:

app.run(function ($rootScope) {
    $rootScope.add = function (a, b) {
        return a + b;
    }
});

然后您可以在控制器中简单地使用此功能

app.controller('Ctrl', function($scope) {
    $scope.mySum = $scope.add(5, 7);
});

这是$rootScope中的一个工作小提琴函数

于 2013-09-19T10:03:05.987 回答