我如何使用服务内部的功能?

问题描述 投票:0回答:2

我想做的是在整个控制器中全局使用功能。问题是当我想使用我在first函数中的服务内部定义的函数时。它显示找不到功能的错误。我试过不带this关键字,但是它不起作用。在其他控制器中尝试时,我可以转到all函数,这是一个好信号,表明我可以全局使用此服务。

总之,我想在first函数中使用all函数。

app.factory("UserService", function() {
  var users = ["Peter", "Daniel", "Nina"];

  return {
    all: function() {
      return users;
    },
    first: function() {
      var users = this.all(); 
      return users[0];
    }
  };
});

上面的代码是我制作的一个示例,真实的代码看起来像这样。控制器

angular.module("app").requires.push("app.region");

我将区域放到应用程序中,以便可以使用该服务。之后,我做了一个像这样的控制器

.controller("regionCreateController", ["$scope", "phoneMaskService", function ($scope, phoneMaskService) {
        $scope.createClicked = function (data) {
            data = phoneMaskService.putMaskOnRegion(data);
            console.log(data);

        };
}

当我放入phoneMaskService时,这是我在app.js中提供的服务,但失败。

angularjs angularjs-service
2个回答
1
投票

避免绑定问题的一种方法是在工厂内部声明函数:

app.factory("UserService", function() {
  var users = ["Peter", "Daniel", "Nina"];

  return { all: all, first: first };

  function all() {
      return users;
  }

  function first() {
      var users = all(); 
      return users[0];
  }

});

-2
投票

您需要引用内部函数的工厂名称,因为“ this”将与当前方法相关,而不是工厂。

app.factory("UserService", function() {
  var users = ["Peter", "Daniel", "Nina"];

  return {
    all: function() {
      return users;
    },
    first: function() {
      var users = UserService.all(); 
      return users[0];
    }
  };
});
© www.soinside.com 2019 - 2024. All rights reserved.