AngularJS重新启动并获取单个url

AngularJS重新启动并获取单个url,angularjs,rest,Angularjs,Rest,我的angular服务中有这些方法,它们使用Restanglar获取远程数据,响应如下: { "1105":{"title":"","field_nazione":{"und":[{"value":null,"format":null,"safe_value":""}]},"field_redazionale":{"und":[{"value":null}]}}, "1110":{"title":"","field_nazione":{"und":[{"value":null,"format":

我的angular服务中有这些方法,它们使用Restanglar获取远程数据,响应如下:

{
"1105":{"title":"","field_nazione":{"und":[{"value":null,"format":null,"safe_value":""}]},"field_redazionale":{"und":[{"value":null}]}},
"1110":{"title":"","field_nazione":{"und":[{"value":null,"format":null,"safe_value":""}]},"field_redazionale":{"und":[{"value":null}]}}
}; 


function restfulService(ipCookie,Restangular) {
        return {
            //Setta la directory di partenza del service rest. In questo modo non devo sempre definirlo
            restfulBase : function() {
                return Restangular.oneUrl('rest','http://MYREMOTEHOST/rest');
            },

            getAllCity : function () {
                return this.restfulBase().get('cities', {'all':1}, {}, {'X-CSRF-Token': tokenVar});
            },
            ....
};
为什么我调用getAllCity时url是:

http://MYDOMAIN/rest?0=c&1=i&2=t&3=i&4=e&5=s
?

如果我使用这个:

Restangular.oneUrl('rest','http://MYDOMAIN/rest/cities').get({all : 1});
我没有问题

我已尝试将我的应用程序更改为在.config方法中设置Restangular.setBaseUrl,然后将我的服务更改为使用Restangular.all'cities.get,但我在字符串方面出错

如果我使用getAll,我会在GetList需要数组而不是对象时出错

那么:使用restanglar的正确方法是什么?我已经阅读了在线文档和教程,但我不知道如何以正确的方式检索元素。和张贴


感谢并为这个愚蠢的问题感到抱歉。

我相信问题在于您将基础设置为一种资源类型。唯一的方法不是设置基本URL。我设置基本url的方式如下所示:

angular.module('app')
   .config(['RestangularProvider', function (RestangularProvider) {

        // Set the base URL
        RestangularProvider.setBaseUrl('http://MYREMOTEHOST/rest');    
    }]);
    // this happens at runtime, either in your implementation code or in a more global config file, like:

   Restangular.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
    // If the what is set, than just grab it and return it
          if (data.hasOwnProperty(what)) {
               return data[what];
          } else {
               // Otherwise make it an array
               var arr = [];
               for (var key in data) {
                   arr.push(data[key]);
               }
               return arr;
         });
然后我访问每个资源,这取决于它的类型和一个或全部,如下所示:

function restfulService(ipCookie,Restangular) {
        return {
            getAllCity : function () {
                return Restangular.all('cities').getList();
            },
            ....
};
您还可以在配置阶段设置默认参数,或在运行时为每个请求设置默认参数。 使用all时出现的getLists想要数组而不是对象错误是因为它只接受数组作为响应,因此需要先截获数据,然后在数组中解析数据。在您的情况下,您将获得一个对象,因此您可以像这样解析它:

angular.module('app')
   .config(['RestangularProvider', function (RestangularProvider) {

        // Set the base URL
        RestangularProvider.setBaseUrl('http://MYREMOTEHOST/rest');    
    }]);
    // this happens at runtime, either in your implementation code or in a more global config file, like:

   Restangular.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
    // If the what is set, than just grab it and return it
          if (data.hasOwnProperty(what)) {
               return data[what];
          } else {
               // Otherwise make it an array
               var arr = [];
               for (var key in data) {
                   arr.push(data[key]);
               }
               return arr;
         });
希望这有帮助