Как ввести данные пользователя в вызове $ resource?

0

Я использую $ resource для извлечения данных json с серверного сервера.

Во-первых, я получаю список идентификаторов, с первым вызовом ресурса. Затем для каждого полученного идентификатора я использую $ resource для извлечения данных, связанных с этим идентификатором.

Теперь проблема заключается в следующем: я хотел бы связать ответ с отправленным идентификатором, чтобы я мог записывать данные в хэш-таблицу. (например: $ scope.table [response.id] = data;). Единственный способ, которым я нашел, - это вернуть API обратно идентификатор в ответ json, но я хотел бы связать идентификатор с запросом, поэтому я знаю, для какого идентификатора я получил ответ, не имея 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] быть "правильным" значением все время, а не обещанием, и я хочу, чтобы он обновлялся, когда я получаю ответ.

Является ли это возможным?

Теги:
angularjs-resource

1 ответ

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;
        });
    });
  });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню