如何使用动态URL为资源创建资源工厂

时间:2014-05-26 12:56:43

标签: javascript angularjs resources

我在移动应用中使用角度。我想使用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;

        });

有办法做到这一点吗?

0 个答案:

没有答案