Работает ли цикл foreach напрямую с хранилищем объектов данных JSonStore?

Я создаю JSONStore с массивом объектов в формате JSON. Я проверил, что он правильно отформатирован.

Затем я пытаюсь использовать для него цикл dojo forEach, но в JSonStore, похоже, нет никаких данных. Я могу указать цель в URL-адресе моей веб-страницы, и она показывает правильные данные. Но использование console.log(myJsonStore) показывает объект, но я не вижу данных в Firebug. Я также не вижу GET для службы, предоставляющей данные. Это похоже на указание целевого пути в URL-адресе в браузере, который запускает GET, но не когда я пытаюсь вызвать его в postCreate, где находится мой foreach.


person teaman    schedule 20.08.2012    source источник


Ответы (2)


Ответ от Рикардо, я считаю, немного неверен, поскольку функция JsonRest.query возвращает dojo.Deferred.

У вас есть вызов REST, который выполняется асинхронно через API чтения хранилища, и как только он возвращает значения, он обещает запустить то, что установлено в качестве обратного вызова.

Вместо этого попробуйте это для своего итератора цикла

storeObj.query( {} ).then(function ( results ) {
  dojo.forEach( results, function( obj ) {
    console.log( obj );
  });
}
person mschr    schedule 21.08.2012
comment
Спасибо @ricardo_garza_v и @mschr! Я обнаружил, что оба работают, но я предполагаю, что mschr более правильный, учитывая асинхронный характер запроса. - person teaman; 22.08.2012

ты можешь это сделать:

var storeObj = new JsonRest({
    target: "/some/resource"
});
storeObj.query({}).forEach(function(obj){console.log(obj);});

Это должно делать свое дело

person Ricardo Garza V.    schedule 21.08.2012