我是Extjs 4的新手,我正在尝试了解如何为具有嵌套对象的数据创建模型。
示例数据:
{
data1:{
field1:1,
field2:2,
**objField1**:{
objField1:1,
objField2:2,
**anotherObj**:{
field1:1,
field2:2,
arrayofObjs:[
{
//...
},
//...
]
}
},
objField2:{
//... Some more fields or objects
},
data2:{
//...
}
}
我正在努力了解如何对这些数据进行建模。字段很简单
Ext.define('MyModel', {
extend: 'Ext.data.Model',
fields: [
{name: 'field1', type: 'int'},
{name: 'field2', type: 'int'}
], //...
但是你如何为物体建模?我在想我可以为子对象和设置关联创建一个模型,但在阅读文档后,他们似乎需要有ID。因此,如果您查看belongsTo页面,“所有者模型应该具有引用相关模型的主键的外键”。
我不打算建模具有外键关系的数据,只是具有子对象的对象。因此,服务器可能会返回一个带有多个子对象的JSON对象,以及我可能想要绑定到网格的其中一个对象,另一个对象的数据到选择框等等。
谢谢!
答案 0 :(得分:4)
我认为你在这里有几个问题。
首先,Ext JS中的模型主要用于表示关系数据,即SQL数据库中的行。你可以扭曲他们做任何你想做的事情,但这并不意味着它会很容易,并且始终存在“为什么”的问题。
其次,Ext.data.Model根本不适合表示树状结构;你可以使用Ext.data.NodeInterface。 NodeInterface是Model的有点类覆盖,部分是mixin,并且通常是非常笨重的东西。好的一面是它有效,而另一方面则是没有其他类可以做同样的事情。
接下来,嵌套数据对象并不一定意味着它们实际上彼此相关。你说你想从一个全局JSON响应中提取对象;这可以通过使用不同的Readers配置多个商店并为它们提供相同的JSON对象来轻松完成。
OTOH,数据结构看起来有点复杂。这是在服务器端进行初步优化的尝试吗?即,将我们可能需要的所有内容放入一个巨大的JSON中以节省服务器命中率?如果是这样,请查看Ext.Direct远程处理;它可以帮助您避免在路上遇到很多麻烦。