我的角度服务模块中有三个服务,我把
Restangular.setBaseUrl(api_url);
在我的每个服务中使用不同的api_url,我希望使用不同的服务和不同的URL;
但是当我发帖给其中一个服务时说api_url = a / v1 / c /,我得到的是发布到api_url = b / v1 / c;
我认为问题是setBaseUrl部分,例如:
factory.Aservice = function(Restangular){
Restangular.setBaseUrl('/a/v1');
var alist= Restangular.all('c/');
return {
createA:function(){
alist.post(data)
}
}
}
factory.Bservice = function(Restangular){
Restangular.setBaseUrl('/b/v1');
var blist= Restangular.all('d/');
return {
createB:function(){
blist.post(data)
}
}
}
当我调用Aservice.createA()时,帖子网址为'/ b / v1 / c',这是错误的。
任何想法为什么?
答案 0 :(得分:2)
您似乎不了解服务范围。 Angular以延迟加载的方式实例化服务。由于您的两个服务都在相同的Restangular上运行,因此最后加载的服务是最后一个将覆盖restangular配置的服务是正常的:
http://plnkr.co/edit/o974TqeunG9DGQONRNDT?p=preview
我创建了一个Plunkr来说明这一点。
还创建了一个Plunkr,显示了正确的方法。
答案 1 :(得分:1)
您还可以为每项服务使用单独的配置,如下所述:https://github.com/mgonto/restangular#how-to-create-a-restangular-service-with-a-different-configuration-from-the-global-one
app.factory('ServiceA', function(Restangular) {
return Restangular.withConfig(function(RestangularConfigurer) {
// service has different address from serviceB
RestangularConfigurer.setBaseUrl('http://service-a.example.com/a/v1');
});
});
app.factory('ServiceB', function(Restangular) {
return Restangular.withConfig(function(RestangularConfigurer) {
// service has different address from serviceA
RestangularConfigurer.setBaseUrl('http://service-b.example.com/b/v1');
});
});