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
放置在模型中,但目前只有id,name和image。使这项工作的方法是什么?如果确实涉及扩展Reader类,那么某些方向会很棒。
感谢。
答案 0 :(得分:2)
您可以像这样更改代码以访问嵌套值
{ name: 'preparationText', type: 'string', mapping: 'properties.preparationText' },
此映射路径应该开始排除根元素。