很抱歉的问题,对不起!
我理解如何使用AngularJS在服务中存储常量,例如:
.value('baseUrl', 'http://127.0.0.1:8001/api/v1/')
但是如何创建另一个使用另一个的常量呢? 似乎价值中没有DI?!?
例如,如果我想创建一个GetUsersUrl
baseUrl
字符串+'用户/'(连接)
我想这很简单......但无法找到如何做到这一点。 谢谢。
答案 0 :(得分:3)
您可以在服务中存储值,在运行阶段对其进行配置,然后再访问这些值。例如:
.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;
});
运行阶段发生在config之后。
.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,这种方法可以工作(并且更像是“Angular方式”)。例如,如果您可以根据运行的环境(开发,生产等)填写baseUrl的相应值,则无需对其进行配置。或者,如果值是常数。