Angularjs AngluarJS重用函数(我把它们放在哪里)

Angularjs AngluarJS重用函数(我把它们放在哪里),angularjs,Angularjs,假设我想在angularjs中重用一个返回特定值的函数,但我想在应用程序的其他部分调用它,这样我就不会在其他地方重写它(dry),我应该将该函数放在angularjs应用程序的何处?我能为工厂服务吗 假设我有两个控制器,在这两个控制器中,我想调用函数foo(),当我传递一个变量时,该函数返回一个特定的数字。在angular结构中,我将函数foo()放在哪里?使用angular 1.x,您需要创建一个服务以使某些东西可重用或类似于实用程序。您可以以类似于http服务的方式将其注入您想要的控制器。取

假设我想在angularjs中重用一个返回特定值的函数,但我想在应用程序的其他部分调用它,这样我就不会在其他地方重写它(dry),我应该将该函数放在angularjs应用程序的何处?我能为工厂服务吗


假设我有两个控制器,在这两个控制器中,我想调用函数
foo()
,当我传递一个变量时,该函数返回一个特定的数字。在angular结构中,我将函数
foo()
放在哪里?

使用angular 1.x,您需要创建一个
服务
以使某些东西可重用或类似于实用程序。您可以以类似于
http
服务的方式将其注入您想要的控制器。取自,服务定义为:

AngularJS服务是连接在一起的可替换对象 使用依赖注入(DI)。您可以使用服务来组织和 在应用程序中共享代码


您可以在这里找到一个非常简单的服务-

AngularJS有三个非常相似的概念:服务、工厂和提供者。每一个都可以用于使用干模式公开API。通常情况下,使用服务、工厂或提供商之间是一个偏好问题。我倾向于使用工厂

下面是一个简单示例,我使用工厂公开api:


这里有一个很好的参考资料,可以帮助您了解服务、工厂和供应商之间的异同:

告诉我们您使用的是哪个版本的angular,以便我们可以定制他们的答案。如果是硬编码的,然后尝试使用AngularJS 1.6.4添加constantIm。如果我通过一个变量传递,那么硬编码的答案会发生变化。抱歉,它不是硬编码的。
var app = angular
  .module("app", [])
  .factory("myapi", function() {
    var api = {
      foo: function (bar) {
        return bar + "_baz"
      }
    };
    //now api is exposed to whoever injects myapi
    return api;
  })
  .controller("ControllerOne", function($scope, myapi) {
    $scope.value = myapi.foo("one");
  })
  .controller("ControllerTwo", function($scope, myapi) {
    $scope.value = myapi.foo("two");
  });