Использование параметра запроса deep: true с адаптером dojo ObjectStore - PullRequest
0 голосов
/ 30 марта 2012

Я новичок в Dojo, и я пытаюсь обдумать некоторые довольно базовые концепции, прежде чем мой партнер и я приступим к новому проекту. Я успешно использовал ItemFileWriteStore для получения данных, возвращаемых из запроса ajax в DataGrid, но я бы хотел использовать вместо этого новое хранилище памяти. Я использую адаптер ObjectStore, чтобы обернуть хранилище памяти, и данные заполняются в сетке.

Одна вещь меня беспокоит. В коде примера, который я выполняю, есть несколько вложенных узлов в объекте JSON, который я использую для заполнения сетки. Это один из объектов JSON стран, которые они используют в документации по dojo. Вот небольшой фрагмент этого объекта:

'items': [
{ 'name':'Africa', 'type':'continent', children:[
    { 'name':'Egypt', 'type':'country' },
    { 'name':'Kenya', 'type':'country', children:[
        { 'name':'Nairobi', 'type':'city' },
        { 'name':'Mombasa', 'type':'city' } ]
    },
    { 'name':'Sudan', 'type':'country', 'children':
        { 'name':'Khartoum', 'type':'city' }
    } ]
   },
 ]

В экземпляре DataGrid я отправляю запрос, а затем задаю для qureyOptions значение {deep: true} следующим образом:

var grid = new DataGrid({
    style: "width: 500px; height: 300px;",
    store: this._geoStore,
    structure: layoutGeo,
    rowSelector: '20px',
    columnReordering: true,
    query: {},
    queryOptions: { deep: true },
    rowsPerPage: 20
}, document.createElement("div"));

Когда я использую старый ItemFileWriteStore, это работает нормально, и ВСЕ вложенные данные по существу сглаживаются и помещаются в сетку, как я и ожидал. Однако, когда я переключаю его на хранилище памяти, обернутое в адаптер ObjectStore, единственными данными, отображаемыми в сетке, является самый верхний родительский элемент объекта данных. В случае выборочных данных отображаются только данные, связанные с Африкой, но ни один из ее детей. Таким образом, кажется, что оператор queryOptions {deep: true} не влияет на использование хранилища памяти.

Есть ли какой-нибудь способ передачи вложенных данных в объектах JSON в сетку данных с использованием хранилища памяти, обернутого в ObjectStore? Я бы подумал, что класс-обертка позаботится об этом, и это возможно, но я не знаю, как это исправить.

Для всех, кто помогает, большое спасибо за ваше время и готовность поделиться своим опытом. Я действительно долго изучал документацию по додзё и сеть, пытаясь разобраться в этом. Боюсь, я мог бы замять что-то очевидное и надеюсь, что вы все можете помочь.

1 Ответ

0 голосов
/ 30 марта 2012

Я писал об изменениях в магазине на http://swingingcode.blogspot.com/2012/03/dojo-implementing-viewmodelstore.html

Код здесь использует новый объект хранилища, но приносит справочную нотацию из API данных. Все объекты будут считаться объектами верхнего уровня и доступны для запросов. Я не реализовал логику для извлечения вложенных объектов.

...