我以这种格式从我的webservice获取了一个json响应字符串:
{
"id":"1",
"name":"Steve",
"age":"50",
"items":[
{"itemType":"item1"},
{"itemType":"item2"}
]
}
我有一个指定的" json"作为我的商店中的reader
,但它似乎无法解析嵌套的json部分:
Ext.define('MyApp.model.Persons',{
extend: 'Ext.data.Store',
model: 'MyApp.model.Person',
storeId: 'PersonStore',
proxy: {
type: 'ajax',
url: 'http://localhost:80/index.php?person=get',
reader: {
type: 'json'
}
}
});
当我在网格中选择一行时,我可以获取如下的值:
var record = grid.getSelectionModel().getSelection();
console.log(record[0].get('name')); // prints "Steve"
但是提取items
不起作用:
console.log(record[0].get('items')[0]); // prints "Undefined"
如何打印此人的物品?
修改
Ext.define('MyApp.model.Person',{
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
],
hasMany: {
model: 'MyApp.model.Item',
name: 'items',
associationKey: 'items'
}
});
Ext.define('MyApp.model.Item',{
extend: 'Ext.data.Model',
fields: [
{
name: 'id',
type: 'int'
},
{
name: 'itemType',
type: 'string'
}
],
belongsTo: 'MyApp.model.Person'
});
编辑2:
Ext.define('MyApp.model.Persons',{
extend: 'Ext.data.Store',
model: 'MyApp.model.Person',
storeId: 'PersonStore',
proxy: {
type: 'ajax',
url: 'http://localhost:80/index.php?person=get',
reader: {
type: 'jsonpersonreader'
}
}
});
Ext.define('MyApp.reader.JsonPersonReader',{
extend: 'Ext.data.reader.Json',
alias: 'reader.jsonpersonreader',
getResponseData: function(response) {
return JSON.parse(response.responseText);
}
});
答案 0 :(得分:0)
¿您是否尝试过不使用“hasMany”配置?而是做这样的事情:
Ext.define('MyApp.model.Person',{
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'age', type: 'int'},
{name: 'items', type:'auto'}
]
});
并使用:
<强>记录[0]获得( '项目')[0] .ID 强>
或
<强>记录[0] .items [0] .ID 强>