我无法让框架正确解析。当生成的商店名称是关联模型的小写,复数名称时(即,从嵌套的posts
模型生成Post
商店时),设置关联以异步加载嵌套数据没有问题。但是在这里,当关联键与关联的模型名称无关时,我无法找到正确的配置以允许框架自动解析相同响应中提供的数据:
App.model.Foo.js
// Bar
Ext.define('Bar', {
extend: 'Ext.data.Model',
fields: [...],
belongsTo: 'App.model.Foo'
});
// Foo
Ext.define('App.model.Foo', {
extend: 'App.model.Base',
fields: [...],
hasMany: {
model: 'Bar',
name: 'children', // trying to allow parsing from 'children'
associationKey: 'children', // property, but not working
reader: 'json'
}
});
数据
{
data: {
// Foo fields
children: [{
// Bar objects
}]
},
success: true
}
children
被添加为Foo
模型上的商店getter-function,但数据未在响应数据中从children
键解析。
答案 0 :(得分:0)
这是一个工作示例(使用ExtJS 4.2.x测试)
Ext.onReady(function () {
Ext.define('Bar', {
extend: 'Ext.data.Model',
fields: ['barfield'],
belongsTo: 'Foo'
});
Ext.define('Foo', {
extend: 'Ext.data.Model',
fields: ['foofield'],
hasMany: {
model: 'Bar',
name: 'children',
associationKey: 'children'
},
proxy: {
type: 'ajax',
url: 'data.json',
reader: {
type: 'json',
root: 'data'
}
}
});
Foo.load("PARAM", {
scope: this,
callback: function (record, operation, success) {
console.log(record.get("foofield"));
var children = record.children(); // get the store
console.log(children.getAt(0).get("barfield"));
console.log(children.getAt(1).get("barfield"));
}
});
});
JSON数据是:
{
"data": {
"foofield": "value",
"children": [
{
"barfield": "bval1"
},
{
"barfield": "bval2"
}
]
},
"success": true
}