2

私はExtjs4を初めて使用し、ネストされたオブジェクトを持つデータのモデルを作成する方法を理解しようとしています。

データ例:

{
  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ページを見ると、「所有者モデルには、関連付けられたモデルの主キーを参照する外部キーが必要です」。

外部キー関係を持つデータをモデル化するのではなく、サブオブジェクトを持つオブジェクトだけをモデル化することを検討しています。そのため、サーバーは複数のサブオブジェクトを含む1つのJSONオブジェクトを返し、それらのオブジェクトの1つをグリッドに関連付け、別のオブジェクトのデータを選択ボックスに結び付けることができます。

ありがとう!

4

1 に答える 1

5

ここにはいくつかの問題があると思います。

まず、Ext JS のモデルは主にリレーショナル データ、つまり SQL データベースの行を表すために使用されます。それらをひねってやりたいことを何でもすることができますが、それは簡単であるという意味ではなく、「何のために」という疑問が常にあります.

第二に、Ext.data.Model はツリー状の構造を表すのにはまったく適していません。そのために Ext.data.NodeInterface を使用できます。NodeInterface は、Model の一種のクラス オーバーライドであり、部分的に mixin であり、一般的に非常にぎこちなく厳格なものです。良い面はそれが機能することであり、欠点は同じことを行うクラスが他にないことです。

次に、入れ子になったデータ オブジェクトは、実際に相互に関連しているとは限りません。1 つのグローバル JSON 応答からオブジェクトを抽出したいとおっしゃいました。これは、複数の Store を異なるReaderで構成し、それらに同じ JSON オブジェクトを供給することで簡単に実行できます。

OTOH、データ構造は少し複雑に見えます。それはサーバー側での予備的な最適化の試みですか? つまり、必要なすべてのものを 1 つの巨大な JSON に入れて、サーバー ヒットを節約するということですか? もしそうなら、Ext.Directリモーティングを見てみましょう。将来の多くの頭痛からあなたを救うことができます。

于 2012-08-14T16:35:54.070 に答える