如何在$ resource调用中注入用户数据?

时间:2015-07-27 20:35:59

标签: angularjs angularjs-resource

我使用$ resource从后端服务器获取json数据。

首先,我获得了一个id列表,并进行了第一次资源调用。然后,对于收到的每个id,我使用$ resource来获取与此id相关联的数据。

现在,问题是:我想将响应与发送的id相关联,因此我可以将数据记录到哈希表中。 (例如:$ scope.table [response.id] = data;)。我发现的唯一方法是让API在json响应中发回id,但是我想将id与查询相关联,所以我知道哪个id是我得到的响应,没有API将其发回。

这是我当前的代码(简化,只是为了得到这个想法):

// the factory. eg I send /rest/item/12345
app.factory('Item', function ($resource) {
    return $resource("/rest/item/:id", { id: '@id'})
});

// the call (in a loop)
// I need to get { "id" : 12345, "text" : "blahblahblah" } 
Item.get({ id : itemId },
  function(data){
    $scope.table[data.id] = data;
  });

我想写这样的东西:

// the call (in a loop). 
// I would like to only need to get { "text" : "blahblahblah" } 
Item.get({ id : itemId },
  function(id, data){
    $scope.table[id] = data;
  });

我想我可以使用这种形式:

$scope.table[itemId] = Item.get({id : itemId});

但我需要$ scope.table [itemId]成为"正确的"我一直都很重视,而不是承诺,我希望它能在我收到答案时更新。

有可能吗?

1 个答案:

答案 0 :(得分:1)

这样的事情可能有用:

// get the array of ids
ItemIds.get({},
  function(ids){
    // for each id, make the request for the actual item
    ids.forEach(function(id) {
        Item.get({ id : id },
          function(data){
          // in this nested callback, you have access to data and id
          $scope.table[id] = data;
        });
    });
  });