2

我是 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 对象,其中一个我可能想要绑定到网格,另一个对象的数据到选择框等。

谢谢!

4

1 回答 1

5

我认为你在这里有几个问题。

首先,Ext JS 中的模型主要用于表示关系数据,即 SQL 数据库中的行。你可以扭曲它们来做任何你想做的事情,但这并不意味着它会很容易,而且总是存在“做什么”的问题。

其次,Ext.data.Model 根本不适合表示树状结构;您可以为此使用 Ext.data.NodeInterface。NodeInterface 是Model 的一种类覆盖,部分是混合,通常是非常笨拙和僵化的东西。好的一面是它可以工作,而坏的一面是没有其他类可以做同样的事情。

其次,嵌套数据对象并不一定意味着它们实际上是相互关联的。你说你想从一个全局 JSON 响应中提取对象;这可以通过使用不同的 Reader 配置多个 Store为它们提供相同的 JSON 对象来轻松完成。

OTOH,数据结构看起来有点复杂。这是在服务器端进行初步优化的尝试吗?即,将我们可能需要的所有内容放入一个巨大的 JSON 中以节省服务器点击量?如果是这样,请查看Ext.Direct远程处理;它可以使您免于以后的许多头痛。

于 2012-08-14T16:35:54.070 回答