2012-11-19 8 views
10

問題があります。素敵なExtJSの関連付けを使いたいのですが、正しく機能していません。ExtJS Store Associationが動作しない理由

問題:

  • モデル
  • にロードした後

を示すデータを全く示していない無関連に注意する癖は何ですか?

答えて

26

私は最近、ExtJSの関連付けで非常に苦労した学習曲線をたどり、いくつかの有用な記事と私自身の問題を発見しました。同じ痛みに冒されている人のための要約がここにあります。 ExtJSのでhasManyの関連付けのための

ルール

  • あなたは[1]
  • は常にあなたの子供を必要としない非常に良い理由が ない限り、必ず、あなたのモデルではなく、自分の店であなたのプロキシを置きますモデルが の場合はhasMany関係でモデルを使用します。 [2]
  • あなたは意志で子供をロードしたい場合は、必ずFOREIGNKEYを使用
  • あなたが親と同じ応答で子供を返す場合
  • 常にassociationKeyを使用しますが
  • が好きな場合は、両方のForeignKeyとassociationKeyを使用することができます
  • 常時常時子モデルが行う
  • (「データ」以外の)読者のルートに意味のある名前を与えることを検討あなたのhasManyの関係
  • に完全修飾モデル名を使用して、あなたのhasManyの関係
  • に名前を付けますhasManyのが機能するためにbelongsToの関係を必要としない

[1]ストアがそのモデルのプロキシを継承し、あなたは常に上書きすることができ、それ
[2]それは簡単に、そして潜在的な循環参照を回避するために、アプリでそれらを要求することができます。あなたはに

  • は必ず完全修飾モデルを使用していない非常に良い理由がない限りExtJSの

    • でhasOneのとbelongsToの関連付けのためのjs

      http://extjs-tutorials.blogspot.com/2012/05/extjs-hasmany-relationships-rules.html

      ルールは、モデル内のプロキシを入れて名前

    • 常にgetterNameを設定してください
    • setterNameを常に設定してください
    • 必ず設定associationKey、異物は、あなたが
    • 短い何か
    • にinstanceNameの変更を検討意志で異物をロードする場合
    • は常に、ForeignKeyのを設定し、このオブジェクトと同じ応答で返された場合
    • ゲッターは、異物がロードされているかどうかによって、 の動作が異なっています。ロードされている場合は、外部オブジェクトが返されます。それ以外の場合は、 コールバックを渡す必要があります。
    • この関連付けをオーバーライドする予定がある場合は、nameプロパティを設定する必要があります。あなたは
    • は、親モデルのidフィールドは「ID」
    • ない場合は時々、あなたは用途を使用する必要があるか、belongsToの関連付けのために必要となるのPrimaryKeyプロパティを設定し動作するようにhasManyのためのbelongsToの関係を必要としない
    • 。しかし循環参照のために を見る。
    • setter()関数を呼び出すと、 はインスタンスを設定していないようです。 がsetter()を呼び出す場合は、object.belongsToInstance = objを設定します。

    http://extjs-tutorials.blogspot.com/2012/05/extjs-belongsto-association-rules.html

    その他

    • あなたがグリッドにあなたのデータを適用している場合は、新しい店舗
    • を使用して、グリッド上の再構成を()を呼び出すことを確認してくださいあなたの " foreignKey "プロパティはExtJSストアにローカルフィルタとして適用されます。ネットワーク経由でデータの読み込みが表示されていて、グリッドに が表示されていない場合は、モデルにforeignKey の値がフィールドとして定義されていることを確認するか、ローカルフィルタでデータ を除外します。あなたのデータは用
  • +3

    +1を示した場合、このような場合には、 イベントストアの「負荷」にフックとstore.clearFilters()を呼び出し、参照をテストするには、 '必要があります。[...]'など私はそれが私の問題だったことを知り驚いています。それを超えてExtJsに本当に悩まされた! – HDave

    関連する問題