2013-07-25 2 views
0

Я работаю с extjs4 в очень большом веб-приложении и пытается выяснить, как привязать мое представление к конкретному под-объекту внутри магазина, который обрабатывает прокси-сервер веб-сервисов. Вебсервис обеспечит объект следующим образом:Ответы сервера-ответчика ExtJS 4

foodOrder = { 
    result: { 

     date : 02/11/2013, 
      orderId: 123456, 

      fruitProducts: { 
      melons: { 
       water, 
       cantelope, 
       ... 
      }, 
      apples: { 
       delicious, 
       granny smith, 
       ... 
      } 
      } 
     } 
    } 

магазин получать этот ответ выглядит следующим образом:

Ext.Define('MyApp.model.FoodOrder', { 
    extend: 'Ext.Model', 

    fields: [ 
    {name: 'date', type: 'date'}, 
    {name: 'orderId'}, 
    {name: fruitProducts, type: 'array'} 
    ], 

    proxy: { 
    type: 'mycustomproxy', 
    url: 'the/food/store/order', 
    reader: { 
     root: 'result', 
     totalProperty: 'totalCount' 
    } 
    } 
}); 

Какие стратегии я могу предпринять, чтобы «покопаться в» параметр fruitProducts внутри результата ? Если бы я хотел загрузить свое представление с информацией, найденной в ответе webservices, как бы я это сделал? Есть ли способ фильтровать ответ?

Любые идеи/мысли будут оценены.

ответ

1

Свойство конфигурации root на считывателе можно изменить, чтобы ссылаться на ваш более глубокий контент. Ext docs say this о root:

Для читателя JSON этого имя свойства (или точечного список разделенных имен свойств, если корень вложен).

Таким образом, вы должны быть в состоянии использовать что-то вроде этого:

reader: { 
    root: 'result.fruitProducts', 
    // etc... 
} 
+0

Хорошо, это имеет смысл. Но что, если некоторые другие компоненты используют этот Store, и только один из моих взглядов нуждается в доступе к fruitProducts? В этом случае я не могу изменить корень, потому что он сломает другие области. Подкласс? – Clev3r

+0

Несомненно, вы можете создать подклассы магазина, которые заменяют корень читателя. –