Model ExtJS 4:理解有很多方面
一段时间以来,我一直在努力理解如何使用hasMany和belongsTo。我的理解是hasMany是一个1:many关系,belongsTo是一个多:1关系--旁白:这是否意味着如果你有一个hasMany关系,那么在它的子模型中需要一个belongsTo?我读过几篇关于它的文章:Model ExtJS 4:理解有很多方面,model,extjs4,has-many,extjs4.2,belongs-to,Model,Extjs4,Has Many,Extjs4.2,Belongs To,一段时间以来,我一直在努力理解如何使用hasMany和belongsTo。我的理解是hasMany是一个1:many关系,belongsTo是一个多:1关系--旁白:这是否意味着如果你有一个hasMany关系,那么在它的子模型中需要一个belongsTo?我读过几篇关于它的文章: 正在页面上加载嵌套数据 不过还是有点困惑。假设我有以下数据: var data = { "config": { "name": "blah", "id": 1, "some
- 正在页面上加载嵌套数据
var data = {
"config": {
"name": "blah",
"id": 1,
"someconfig": [{
"name": "Services", "tabs": [{
"id": 0, "name": "Details", "layout": "hbox"
}, {
"id": 1, "name": "Sources", "layout": "hbox"
}, {
"id": 2, "name": "Paths", "layout": "hbox"
}, {
"id": 3, "name": "Ports", "layout": "hbox"
}, {
"id": 4, "name": "Levels", "layout": "hbox"
}, {
"id": 5, "name": "Notes", "layout": "hbox"
}]
}, {
"name": "Services2", "tabs": [{}]
}]
}
};
我将为配置创建一个模型:
Ext.define('Config', {
extend: 'Ext.data.Model',
fields: ['name'],
hasMany: [{
name: 'someconfig',
model: 'Someconfig',
associationKey: 'someconfig'
}],
proxy: {
type: 'memory',
data: data,
reader: {
type: 'json',
root: 'config'
}
}
});
所以Config可以有很多someconfig,因为在数据中,someconfig是一个对象数组。以下是Someconfig模型:
Ext.define('Someconfig', {
extend: 'Ext.data.Model',
fields: [
'name'
],
hasMany: [{
name: 'tabs',
model: 'Tabs',
associationKey: 'tabs'
}]
});
好的,一模一样。Someconfig可以有许多选项卡,因为在数据中,选项卡是一个对象数组。以下是选项卡模型:
Ext.define('Tabs', {
extend: 'Ext.data.Model',
fields: [
'id',
'name',
'layout'
],
belongsTo: [{
name: 'tabs',
model: 'Someconfig',
associationKey: 'tabs'
}]
});
现在,贝朗斯托在那里,因为我在这里乱搞。无论如何,我不能从Someconfig访问选项卡,但我可以从Config访问Someconfig。请看下面的代码:
Config.load(1, {
success: function(record, operation) {
console.log(record.get('name')); // works
console.log(record.someconfig().getCount()); // works, gives me 2
console.log(record.someconfig().data.items[0].data); // only prints out name and config_id
// console.log(record.someconfig().tabs()); // doesn't exist
}
});
jsFiddle:
我想知道的是,我是否应该能够从someconfig()访问tabs(),或者我是否误解了这些关系?如果是前者,我将如何修复代码
交叉发布自。您的方法有一些问题:
希望它能帮助你解决问题。是的。你说得很对,这就是我昨天在反复研究之后得出的结论。谢谢因此,有趣的是,
someconfig
没有显示在record
的数据中。。。我只能通过调用其方法访问someconfig
。这对我来说没有意义。。。如果config
模型有许多someconfig
,它应该作为一个模型数组显示在config
中!
someconfig = record.someconfig().getAt(0);
sometab = someconfig.tabs().getAt(0);