NgResource 调用请求地图

NgResource get call for requesting a map

我正在做一个小应用程序,昨天我意识到这件事我真的无法理解。

我的控制器 Java 正在监听请求,它 returns 是一个具有多个值的地图。但是当我在控制器中使用 ngResource 时,我调用的是 .get() 方法而不是 .query() 方法,然后在视图上我可以使用类似 x in response...。 query() 不应该用于数组而 get() 不应该只用于一个对象吗?

有人可以解释一下吗?谢谢

EDIT 所以,我从 {"1":"PRUEBA","2":"HOLA"} 收到的 json 就是这个,如果我使用 .query() 我会得到以下错误:

Error in resource configuration for action Error in resource configuration for action{0}. Expected response to contain an {1} but got an {2} (Request: {3} {4}). Expected response to contain an query but got an array (Request: object GET)

所以,我仍然不明白为什么我在获取数组时需要 .get...

默认查询 returns 一个数组,而获取不会

  { 'get':  {method:'GET'},
  'save':   {method:'POST'},
  'query':  {method:'GET', isArray:true},
  'remove': {method:'DELETE'},
  'delete': {method:'DELETE'} };

您可以使用不同的 url 覆盖 get 或创建其他函数并将 isArray 设置为 true:

  angular.module('myModule').factory('myResourceFactory', function($resource, apiHost) {
  return $resource(apiHost + '/myresources/:myresourceId', null, {
        'query': { method:'GET', url: apiHost + '/myresources/:myresourceId/somethings',isArray: true}
    }); 
});

查询方法需要一个数组 [{obj1},{obj2}]

get 方法需要一个对象 {"1":"PRUEBA","2":"HOLA"}

在您的情况下,您应该使用 get() 方法。