在Angular JS中放置用户定义函数的位置?

时间:2012-09-18 15:41:11

标签: javascript model-view-controller scope angularjs

在我看来,我想呈现:

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

say的定义如下:

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

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

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

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

如果我在Angular文件结构之外定义函数,它什么都不呈现。如果我在controllers.js文件中定义它,但在控制器函数范围之外,则相同。

放置我的功能的适当位置在哪里,所以我可以在任何控制器中渲染它?

1 个答案:

答案 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的示例。