ネストされたリストとして表示されるネストされたデータをフェッチしていますが、トップレベルのアイテムをタップすると、子リストを表示する代わりに同じトップレベルのリストが再び表示され、JSON データを再度フェッチするために ajax リクエストが起動されます。店舗はこちら:
Ext.define('MyTabApp.store.CategoriesStore',{
extend:'Ext.data.TreeStore',
config:{
model : 'MyTabApp.model.Category',
autoLoad: false,
storeId : 'categoriesStore',
proxy: {
type: 'ajax',
url: 'resources/data/catTree.json',
reader: {
type: 'json',
rootProperty: 'data.categories'
}
},
listeners:{
load: function( me, records, successful, operation, eOpts ){
console.log("categories tree loaded");
console.log(records);
}
}
}
});
そして、これが私がサービスをモックするために使用しているそのファイルのデータです:
{
"data":{
"categories": [
{
"name": "Men",
"categories": [
{
"name": "Footwear",
"categories": [
{ "name": "Casual Shoes", "leaf": true },
{ "name": "Sports Shoes", "leaf": true }
]
},
{
"name": "Clothing",
"categories": [
{ "name": "Casual Shirts", "leaf": true },
{ "name": "Ethnic", "leaf": true }
]
},
{ "name": "Accessories", "leaf": true }
]
},
{
"name": "Women",
"categories": [
{ "name": "Footwear", "leaf": true },
{ "name": "Clothing", "leaf": true },
{ "name": "Accessories", "leaf": true }
]
},
{
"name": "Kids",
"categories": [
{
"name": "Footwear",
"categories": [
{ "name": "Casual Shoes", "leaf": true },
{ "name": "Sports Shoes", "leaf": true }
]
},
{ "name": "Clothing", "leaf": true }
]
}
]
}
}
これはリストです:
Ext.define('MyTabApp.view.CategoriesList', {
extend: 'Ext.dataview.NestedList',
alias : 'widget.categorieslist',
config: {
height : '100%',
title : 'Categories',
displayField : 'name',
useTitleAsBackText : true,
style : 'background-color:#999 !important; font-size:75%',
styleHtmlContent : true,
listConfig: {
itemHeight: 47,
itemTpl : '<div class="nestedlist-item"><div>{name}</div></div>',
height : "100%"
}
},
initialize : function() {
this.callParent();
var me = this;
var catStore = Ext.create('MyTabApp.store.CategoriesStore');
catStore.load();
me.setStore(catStore);
}
});
トップ配列のdata
ラッパーを削除し、代わりにに変更すると、各タップで ajax リクエストなしでリストが適切に機能し始めます。サーバーは実際にはオブジェクトで返されているため、削除することはできません。その場合、ストアを修正するにはどうすればよいですか? また、ファイルをフェッチするための追加の ajax リクエストが必要なのはなぜですか?categories
rootProperty
categories
data.categories
categories
data
[編集] フィドルhttp://www.senchafiddle.com/#d16klを作成しようとしましたが、これは 2.0.1 を使用しており、データが外部ファイルまたはサーバーから読み込まれないため、似ていますが同じではありません。