在Angular JS中把用户定义的函数放在哪里?

在我看来,我想渲染:

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

在哪里被定义如此:

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

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

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

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

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

在哪里放置我的function,所以我可以渲染它在任何控制器?

一种方法是使用要在多个控制器上共享的function创build服务 。 看到这个职位了解更多信息。

这样做后,你可以注入你创build的服务到任何控制器,并访问say()函数代码如下所示:

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

你在哪里定义myService为:

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

这里是一个jsFiddle的例子。