35

在我看来,我想渲染:

<p>
  {{ say() }}
</p>

wheresay是这样定义的:

say = function() {
  return "Hello World";
}

我可以在我的控制器中定义它:

function TestCtrl($scope) {
  $scope.say = function() { ... };
}

但是它只能在该控制器内访问。

如果我在 Angular 文件结构之外定义函数,它不会呈现任何内容。如果我在我的controllers.js文件中定义它,但在控制器功能范围之外,则相同。

放置我的函数的正确位置在哪里,以便我可以在任何控制器中呈现它?

4

1 回答 1

48

一种方法是创建一个具有您希望在多个控制器之间共享的功能的服务。有关更多信息,请参阅此帖子

完成此操作后,您可以将创建的服务注入任何控制器并使用如下say()代码访问该函数:

function TestCtrl($scope, myService){
   $scope.say = myService.say;
}

您定义myService为:

angular.module('myApp', [])
    .factory('myService', function () {
        return {
            say: function () {
                return "Hello World";
            }
        }
    });

这是一个带有示例的jsFiddle 。

于 2012-09-18T16:43:05.633 回答