您可以将值存储在服务中,将其配置到运行阶段,然后再访问这些值。例如:
.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的相应值,则无需对其进行配置。或者,如果该值是恒定的。
非常感谢,正是我需要的! –