在我看来,我想呈现:
<p>
{{ say() }}
</p>
say
的定义如下:
say = function() {
return "Hello World";
}
我可以在我的控制器中定义它:
function TestCtrl($scope) {
$scope.say = function() { ... };
}
但是它只能在该控制器内访问。
如果我在Angular文件结构之外定义函数,它什么都不呈现。如果我在controllers.js
文件中定义它,但在控制器函数范围之外,则相同。
放置我的功能的适当位置在哪里,所以我可以在任何控制器中渲染它?
答案 0 :(得分:48)
一种方法是create a service使用您想要在多个控制器之间共享的功能。有关详细信息,请参阅this post。
执行此操作后,您可以将创建的服务注入任何控制器,并使用以下代码访问say()
函数:
function TestCtrl($scope, myService){
$scope.say = myService.say;
}
您将myService
定义为:
angular.module('myApp', [])
.factory('myService', function () {
return {
say: function () {
return "Hello World";
}
}
});
以下是jsFiddle的示例。