在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的例子。