私はextjs 4をテストしていますが、何かに遭遇しました。私は理解できないようです。extjs 4 XTemplateクラスの関連付け
私は単純なオブジェクトの関連性があります。スナップショット - hasManyの - >モデル
さて、私はビューコンポーネントでこの関連付けを表示するためのXTemplateを使用しようとしていますので、私は私のXTemplateはこのように見ています
をExt.create('Ext.XTemplate',
'<tpl for=".">',
'<div class="snapshot" id="{id}">',
'<h1>{snapshot}</h1>',
'<p><span class="label">Created: </span>{dateString}</p>',
'<p><span class="label">Models</span></p>',
'<tpl for="models">',
'<p>{name} - {description}</p>',
'</tpl>',
'</div>',
'</tpl>',
'<div class="x-clear bottompad"></div>'
);
そして、私のJSONレスポンスは、この(ちょうど 'スナップショット' ノードを示す)のようになります。ExtJSの4として
{
"id": 1,
"snapshot": "Snapshot 1",
"created": 1305806847000,
"models": [
{
"id": 1,
"name": "ABC",
"description": "A B C"
}, {
"id": 111,
"name": "ABCDD",
"description": "A B C XCXC"
}
]
}
モデルのコンセプトを引き出す私は、スナップショットとモデルのモデルを作成し、APIドキュメントに従ってアソシエーションを作成しました。
スナップショットモデル:
Ext.define('Snapshot', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
'snapshot',
{name: 'created',type: 'date', dateFormat: 'time' }
],
associations:[
{type: 'hasMany', model: 'Model', name: 'models'}
],
idProperty: 'id'
});
モデルモデル; P
Ext.define('Model', {
extend: 'Ext.data.Model',
belongsTo: 'Snapshot',
fields: [
{ name: 'id', type: 'int' },
{ name: 'snapshot_id', type: 'int' },
'name',
'description'
],
idProperty: 'id'
});
そして、私のどこに問題があるこれは - 私は、このセットアップを使用する場合のXTemplateが実行されているとき、私のモデルのどれもが表示されませんしかし、スナップショットモデルから関連付けを削除し、「モデル」という別のフィールドを追加するだけでOKです。
アソシエーションを使用しているときにモデルのリストを正しく表示するにはどうすればよいですか? これを行うには、ネストされたテンプレートとカスタム関数を使用する必要がありますか?
は、これは自分の足での撮影のようなものですが、私は煎茶でORMの概念のように行いますほとんどの言語は今のところある種のORMを持っています。この機能がMVCコンセプトの堅固なブロックであることがわかりますが、正直なところ、これはオフボックスで作業することを望んでいました。おそらく次のリリースでこの機能が実現するでしょう。今のところ私は、私のプロジェクトのための最も痛みを伴う移行モデルであるため、私は関連なしでモデルコンセプトに固執すると思います。 – Greg
私は同意します。全体的に、ExtJS4の多くの優れたものが、品質面では悲惨に失敗しました。 (ドキュメンテーションでさえ不完全で、何かを説明している途中で記事の多くが停止する)Senchaフォーラムを見て、「ライトは点灯しているが、誰も家にいない」。とにかく、この答えが助けになった場合、upvotingまたはacceptingを検討してください –
prepareDataメソッド(4.1 beta2以降)がgetAssociatedDataメソッドを使用し、これらを返されたデータオブジェクトに適用することは、今後のブラウザでは注目に値するかもしれません。 – Stuart