我在移动应用中使用角度。我想使用angular $resource
创建资源以从我的restful服务器获取数据。我也在使用多域支持。每个域都有自己的URL,这是所有服务器查询的基本URL。为了动态提供基本URL,我创建了一个名为domainService
的服务。我可以获得基本网址:
var baseURL = domainService.getBaseURL()
问题是当我创建资源时,此方法不能用于动态更改基本URL。由于工厂是单件,因此只创建一个实例。
angular.module('resources.announcementResource',[])
.factory('announcementResource',function(domainService,$resource) {
var baseURL = domainService.getBaseURL() + '/announcement/:id';
return new $resource(baseURL , {
id:'@id'
});
});
在这种情况下,网址不会更改。我也尝试过以下解决方案: How to create a dynamic file resource from angular service factory?喜欢这个
angular.module('resources.announcementResource',[])
.factory('announcementResource',function(domainService,$resource) {
var announcementResource = {};
announcementResource.getResource = function() {
var baseURL = domainService.getBaseURL() + '/announcement/:id';
return $resource(baseURL , {
id:'@id'
});
}
return announcementResource;
});
但问题在于我使用相同的资源来创建新的公告。所以我无法获得新的资源对象,也无法像这样调用$save
var announcement = announcementResource.getResource().$save();
我还尝试过其他一些解决方案:
angular.module('resources.announcementResource',[])
.factory('announcementResource',function(domainService,$resource) {
return new $resource(getBaseURL() , {
id:'@id'
});
function getBaseURL() {
return domainService.getBaseURL() + '/announcement/:id';
}
//return announcementResource;
});
有办法做到这一点吗?