ExtJS を使用して、同じモデルの異なるビューを表示しようとしています (各ビューはモデルのサブセットを表示します)。
次のxmlをロードするネストされたモデルがあります:
<results>
<hitcount>1234</hitcount>
<recommended>
<title>foo</title>
</recommended>
<result>
<title>title1</title>
<author>author1</author>
</result>
<result>
<title>title2</title>
<author>author2</author>
</result>
</results>
このモデルの各部分を表示するさまざまなウィジェットが必要です (「結果」を表示するリスト、「推奨」を表示する別のリスト、ヒット数を表示する別のウィジェット)。
私が知らないのは、各ウィジェットでストアを宣言して、完全なモデルのサブセットのみをターゲットにする方法です。
基本的なアプローチのように聞こえますが、この例を見つけることができませんでした (ネストされた構造の例はたくさん見つかりましたが、モデルのサブセットを対象としたストアの例は見つかりませんでした)。
以下の結果部分のみを取得しようとする試みを参照してください。
Ext.define("MySenchaApp.model.ResultModel", {
extend:"Ext.data.Model",
config:{
associations: [
{
type:'hasMany',
model:'MySenchaApp.model.Result',
name:'results',
associationKey:'result'
}
],
proxy:{
type:"ajax",
url:'Results.xml',
reader:{
type:'xml',
rootProperty:'results'
}
}
}
});
Ext.define("MySenchaApp.model.Result", {
extend:"Ext.data.Model",
config:{
fields:['title', 'author'],
belongsTo: 'MySenchaApp.model.ResultModel'
}
});
Ext.define('MySenchaApp.view.Results', {
extend:'Ext.navigation.View',
xtype:'blog',
config:{
title:'Results',
items: [
{
xtype:'list',
itemTpl:'<b>{title}</b> - by <i>{author}</i>',
store:{
autoLoad:true,
model:'MySenchaApp.model.Result' // ??
}
}
]
}
});