AngluarJS重用函数(我在哪里放)

时间:2017-07-08 19:41:49

标签: angularjs

让我说我想在angularjs中重用一个返回特定值的函数,但我想在应用程序的其他部分控制器中调用它,所以我不会在其他地方重写它(干),我会把它放在哪里在angularjs应用程序中的功能?我会为此为工厂服务吗?

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

2 个答案:

答案 0 :(得分:0)

使用Angular 1.x,您需要创建override var currentSpeed: Double { set { super.cuc = 90 } get { return super.cuc } } print(car.cuc) 以使某些内容可重用或像实用程序一样。您可以以与service服务相似的方式将此注入到您想要的控制器中。取自AngularJS website,服务定义为 -

  

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

你可以在这里找到一个非常简单的服务 - an example by w3schools

答案 1 :(得分:0)

AngularJS有三个非常相似的概念服务,工厂和提供商。每个都可以用于使用DRY模式暴露api。大多数情况下,使用服务,工厂或提供商是一个偏好问题。我倾向于喜欢使用工厂。

这是一个简单示例的jsfiddle,我使用工厂来公开api:https://jsfiddle.net/kaxtxL1h/

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");
  });

以下是了解服务,工厂和提供商之间相同点和不同点的好参考:AngularJS: Service vs provider vs factory