0

Ext.data.Modelクラスはバックエンドモデルを表します。サーバーコードの場合と同様に、そのフィールドの一部はreferenceプロパティを使用して別の宣言モデルタイプにすることができます。モデルのgetAssociatedData()関数を使用すると、参照されるすべてのフィールドを含むオブジェクトが返されることがわかりました。しかし、それらは参照オブジェクトのデータオブジェクトを含んでいます。フルオブジェクトのデータオブジェクトは、Ext.data.Modelで初期化されています。プリミティブオブジェクトへのアクセスが強制され、モデルの設定されたプロキシなどをロード/保存することはできません。これは、この機能を使用する正しい/唯一の方法ですか?また、参照フィールドの列をグリッドに追加する方法も探していましたが、うまくいきません...参照フィールドを宣言することの有用性を疑うようになり始めています。Extjs:モデルのフィールド参照のAssociate Dataを使用する正しい方法は何ですか?

例コード:チャドPeruggiaが言ったように

Ext.define('MyApp.ModelA', { 
    extend: 'Ext.data.Model', 
    fields: [{ 
     name: 'modelb', 
     reference: 'MyApp.ModelB' 
    }] 
}); 

Ext.define('MyApp.ModelB', { 
    extend: 'Ext.data.Model', 
    fields: [{ 
     name: 'modelId', 
     type: 'int' 
    }] 
}); 

//... 
var modelA = new MyApp.ModelA().load(); 
var modelB = modelA.getAssociatedData().modelb; //This is the only way to access it. 
var modelBId = modelB.get('modelId') //This returns undefined because the function .get doesn't exist. 
var modelBId = modelB.id; //This works because it is a simple object property access. 
//... 
+0

この 'var modelB = modelA.getModelb()'を実行してみてください。 –

答えて

0

、ExtJSには、フィールド名と一致referenceフィールドのための特別なゲッターを作成しているようです。 getAssociatedData()を使用すると、これらのオブジェクトのプリミティブ形式(dataの値のみ)が返されますが、特殊なゲッター(私の場合はgetModelb())を使用すると、指定されたデータで初期化された本格的なモデルが返されます。

関連する問題