Как использовать внутренние свойства ответа JSON с Sencha Proxy - PullRequest
0 голосов
/ 15 марта 2012

Прокси JSONP в основном работает для меня, но мне нужно установить свойства модели на основе некоторых вложенных свойств в ответе JSON.Я не могу понять, как это сделать, не расширяя класс Reader, но подумал, что, возможно, есть простой способ, который мне просто не хватает.

Модель моего рецепта:

Ext.define('NC.model.Recipe', {
  extend: 'Ext.data.Model',
  config: {
    fields: [
      { name: 'name', type: 'string' },
      { name: 'image', type: 'string' },
      { name: 'preparationText', type: 'string' },
      { name: 'ingredientsText', type: 'string' },
      { name: 'servings', type: 'string' }
    ]
  }
});

МойМагазин:

Ext.define('NC.store.Recipes', {
  extend: 'Ext.data.Store',

  config: {
    model: 'NC.model.Recipe',
    storeId: 'Recipes',
    proxy: {
      type: 'jsonp',
      url: 'http://anExternalSite.com/api',
      callbackKey: 'callback',
      filterParam: 'text',
      extraParams: {
        type: 'Recipe'
      },
      reader: {
        type: 'json',
        idProperty: 'uuid',
      }
    }
  }
});

Формат JSON:

[
  {
    uuid: "/UUID(XXXX)/",
    name: "Spicy Peanut Noodle Salad",
    image: "http://someplace.com/noodle-salad.jpg",
    properties: {
      preparationText: "Make it all nice and stuff",
      ingredientsText: "Heaps of fresh food",
      servings: "serves 4",
    }
  },
  { ... },
  { ... }
]

Я бы хотел, чтобы эти 3 «свойства» - preparationText, ingredientsText и servings, были помещены вмодель, но в настоящее время только идентификатор, имя и изображение.Какой способ заставить эту работу?Если это действительно связано с расширением класса Reader, какое-то направление было бы здорово.

Спасибо.

1 Ответ

2 голосов
/ 15 марта 2012

Вы можете изменить свой код следующим образом, чтобы получить доступ к вложенным значениям

{ name: 'preparationText', type: 'string', mapping: 'properties.preparationText' },

Этот путь отображения должен начинаться без корневого элемента.

...