当把用户定义的函数角JS?(Where to put user defined functions

2019-07-31 17:15发布

在我看来,我要呈现:

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

其中say的定义是这样的:

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

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

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

但随后,这只是该控制器中进行访问。

如果我定义角度文件结构之外的功能,它呈现什么。 同样的,如果我把它定义在我controllers.js文件,而是一个控制器功能范围之外。

哪里是把我的功能,正确的地方,所以我可以在任何控制器渲染呢?

Answer 1:

一种方法是创建一个服务与您要跨越多个控制器共享的功能。 请参阅这篇文章获取更多信息。

当你这样做你可以注入你到任何控制器创建的服务和访问say()的代码是这样的功能:

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

当你定义myService为:

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

这里是一个的jsfiddle用一个例子。



文章来源: Where to put user defined functions in Angular JS?