2015-10-01 2 views
0

Мне нужно импортировать следующее в магазин, но я смущен о правильной модели или моделях, которые мне нужно создать.Лучший способ создать модель для магазина для массива?

вот пример JSON, который возвращается с моего сервера. В основном это массив с 2 элементами, с массивом в каждом. Имена полей различаются в каждом.

Я подозреваю, что мне нужно иметь более одной модели и иметь отношения, но я не уверен, с чего начать. Есть идеи? Благодаря

[ 
    firstItems: [ 
    { 
     name : "ProductA", 
     key: "XYXZ", 
     closed: true 
    }, 
    { 
     name : "ProductB", 
     key: "AAA", 
     closed: false 
    } 
    ], 
secondItems : [ 
{ 
     desc : "test2", 
     misc: "3333", 
    }, 
    { 
     desc : "test1", 
     misc: "123" 
    } 

    ] 
] 
+0

Там нет ничего, что я см. в этом ответе, который показывает любые отношения между первым и вторым. Если вам нужны эти данные в магазинах, и это единственный способ получить ответ, я бы создал 2 магазина для первого и второго. Затем выполните запрос Ajax для данных, а в методе успеха используйте методы loadData магазинов или loadRawData для первого и второго. – bakamike

+0

Вы показали не JSON. Массивы не имеют свойств. [См. Мой ответ] (http://stackoverflow.com/a/32908928/227299) –

ответ

1

То, что вы не JSON, ваше открытие и окончание [] может стать JSON, изменяя их {}, а затем с помощью следующих моделей

Тогда вы можете моделировать его как

// Abbreviated definitions of Models, it has changed starting at Ext 5 
Ext.define('FirstItem', fields: ['name', 'key', 'closed']) 
Ext.define('SecondItem', fields: ['desc', 'misc']) 
Ext.define('TopLevel', { 
    hasMany: [ 
     {model: 'FirstItem', name: 'firstItems'}, 
     {model: 'SecondItem', name: 'secondItems'} 
    ]  
}) 
+0

Это не имеет никакого смысла, нет единого ключа между двумя моделями, как они могут быть связаны? – bakamike

+0

@bakamike OP показывает встроенные данные, это будет один звонок. Если вы собираетесь динамически загружать дочернее хранилище, вам нужно будет указать, как они связаны и отделить запросы AJAX. –

+0

Спасибо, вот и все. Да, я понимаю, что нет отношений. Его данные возвращаются мне. Мне просто нужно заполнить его, как показано в примере. благодаря! – Martin

0

Используйте reader для прокси-магазина, она будет создавать соответствующую модель на нагрузке. Если вам нужно загрузить уже загруженный json в магазин, используйте , но читателю вам понадобится в любом случае.

+0

Значит, это создаст динамическую модель? в процессе ? Если это так, зачем нам создавать модели в первую очередь? Просто из интереса ... – Martin

+0

Если вы укажете модель в магазине, прокси создаст экземпляр предоставленной модели и по умолчанию Ext.data.Model в противном случае. «Если это так, зачем нам когда-либо создавать модели в первую очередь?» - не задал вопрос, что вы подразумеваете под «в первую очередь»? – yorlin

Смежные вопросы