2013-07-31 5 views
0

Мне сложно получить то, что я хочу, из Ext. Я пытаюсь разделить ответ RESTful с вложенными параметрами. Одним из параметров является массив объектов, где каждый объект имеет еще несколько параметров. Как я могу создать модель/store/view для распознавания этого типа ответа?ExtJs 4 Ассоциации данных

response = { 
    stuffINeed: { 
    animals, 
    fruits, 
    veggies = { 
     cucumbers, 
     apples, 
     pears, 
     squash = { 
     winter, 
     pumpkin, 
     summer = { 
      yellow, 
      green 
     } 
     } 
    } 
    }, 

    stuffIDontNeed: { 
    ... 
    }, 

    moreStuffIDontNeed: { 
    ... 
    } 
} 

Как использовать ассоциации для создания моей модели/магазина? Давайте предположим, что модель «основа» выглядит следующим образом:

Ext.define('MyApp.model.StuffINeed', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'animals', type: 'boolean'}, 
     {name: 'fruits', type: 'boolean'}, 
     {name: 'veggies', type: 'array'} 
    ], 

    hasMany: [{name: 'veggies', model: 'veggieModel'}], 

    proxy: { 
     type: 'REST', 
     url: '/someserver' 
     reader: { 
     root: 'data', 
     totalProperty: 'totalCount' 
     } 
    } 
    } 

Нужно ли мне вторую модель вегетарианский, отражающую параметры я ищу? Как я вставляю массив veggie моделей в свой корень?

Ext.define('MyApp.model.Veggie', { 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'cucumbers'}, 
    {name: 'apples'}, 
    {name: 'pears'}, 
    {name: 'squash', type: 'array'} 

    belongsTo: 'MyApp.model.StuffINeed' 
    ] 
}); 

ответ

0

Один из вариантов, если вы не нуждаетесь в полной целостности системы модели, является просто использовать type: 'auto', которая хранит данные, возвращаемый исходные данные. Затем ваш model.get('veggies') предоставит вам объект, к которому вы можете получить доступ, как обычный объект javascript.

+0

Это было бы неплохо, но около 20 других объектов уже существуют в модели, которую я редактирую. Я не могу реорганизовать этот путь. – Clev3r