在AngularJS的服务中存储常量?

在AngularJS的服务中存储常量?,angularjs,Angularjs,很抱歉,这是一个非常卑鄙的问题 我了解如何使用AngularJS在服务中存储常量,例如: .value('baseUrl', 'http://127.0.0.1:8001/api/v1/') .factory('UrlService', function() { var UrlService = {}; UrlService.baseUrl = undefined; // you can set a default value UrlService.getUsersUrl = f

很抱歉,这是一个非常卑鄙的问题

我了解如何使用AngularJS在服务中存储常量,例如:

.value('baseUrl', 'http://127.0.0.1:8001/api/v1/')
.factory('UrlService', function() {
  var UrlService = {};

  UrlService.baseUrl = undefined; // you can set a default value
  UrlService.getUsersUrl = function() { 
    if (UrlService.baseUrl === undefined) {
      return undefined;
    } else {
      return UrlService.baseUrl + '/Users/';
    }
  };

  return UrlService;
});
但是我怎样才能创建另一个使用另一个常量的常量呢? 似乎在价值观上没有DI

例如,如果我想创建一个
GetUsersUrl
,它是
baseUrl
string+'Users/'(连接)

我想这很简单…但找不到如何做。
谢谢。

您可以在服务中存储值,在运行阶段进行配置,然后稍后访问这些值。例如:

.value('baseUrl', 'http://127.0.0.1:8001/api/v1/')
.factory('UrlService', function() {
  var UrlService = {};

  UrlService.baseUrl = undefined; // you can set a default value
  UrlService.getUsersUrl = function() { 
    if (UrlService.baseUrl === undefined) {
      return undefined;
    } else {
      return UrlService.baseUrl + '/Users/';
    }
  };

  return UrlService;
});
运行阶段发生在配置之后

.run(function(UrlService) {
  UrlService.baseUrl = 'localhost:8001/api/v1';
});
然后,在控制器等中,您可以注入UrlService并执行以下操作

UrlService.getUsersUrl()
编辑:重写答案

编辑2:另一种方法

在我看来,只有
baseUrl
才是常量。因此,你可以:

.value('baseUrl', 'localhost:1337')
.factory('urlService', ['baseUrl', function(baseUrl) {
  return {
    getUsersUrl: function() { return baseUrl + '/users/'; },
    // OR
    usersUrl: baseUrl + '/users/' // it can also be a primitive value
  }
}]);

如果您不需要实际配置baseUrl,那么这种方法是有效的(而且更像是“角度方法”)。例如,如果您可以根据运行的环境(开发、生产等)填写baseUrl的适当值,则无需对其进行配置。或者,如果值是常量。

非常感谢,这正是我所需要的!