在AngularJS的服务中存储常量?
很抱歉,这是一个非常卑鄙的问题 我了解如何使用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
.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的适当值,则无需对其进行配置。或者,如果值是常量。非常感谢,这正是我所需要的!