こちらのリンクを参考にアコーディオンリストを実装しました。http://docs.kawanoshinobu.com/touch/#!/api/Ext.ux.AccordionList . アコーディオンは問題なく正常に動作しています。アコーディオン リストのヘッダーでのみテキストを検索する必要があります。検索後、アコーディオン ヘッダーを取得した場合は 1 回。ヘッダーの子アイテムを表示する必要があるヘッダーを展開および折りたたむことができるはずです。ストア フィルターを適用しました。フィルターされたストアであり、フィルターされたデータが表示されます (画像参照)。ヘッダーの右側で展開と折りたたみが行われ、下のアイコンが変化しています。ただし、展開モードで特定のヘッダーの子ノード データを表示できません。そのヘッダーの子ノードが利用可能です (console.log() に表示されます)。アコーディオン リスト/ツリー ストアにフィルターを適用する他の方法はありますか? 感謝します。ありがとうございました。上記のリンク自体で、ストアフィルターを適用しました。これは、コードで問題に直面しているものと同じ動作です。以下のコードでは、フィルター テキスト 'to' を渡します。今日はフィルタリングされています。とてもいいです。ただし、子ノードの展開をクリックすると表示されません。
コードはここにあります:
var data = {
"items" : [{
"text" : "Today",
"items" : [{
"text" : "Eat",
"leaf" : true
}, {
"text" : "Sleep",
"leaf" : true
}, {
"text" : "Drinking",
"leaf" : true
}]
}, {
"text" : "Tomorrow",
"items" : [{
"text" : "Watch TV",
"leaf" : true
}, {
"text" : "Watch Video",
"leaf" : true
}]
}, {
"text" : "This week",
"items" : [{
"text" : "Shopping",
"leaf" : true
}]
}, {
"text" : "Later",
"items" : [{
"text" : "Eat",
"leaf" : true
}, {
"text" : "Sleep",
"leaf" : true
}, {
"text" : "Drinking",
"leaf" : true
}]
}]
};
Ext.define('Task', {
extend: 'Ext.data.Model',
config: {
fields: [{
name: 'text',
type: 'string'
}]
}
});
var store = Ext.create('Ext.data.TreeStore', {
model: 'Task',
defaultRootProperty: 'items',
root: data
});
store.filter([{
property: "text",
value: "to",
anyMatch: true
}]);
var accordionList = Ext.create('Ext.ux.AccordionList', {
fullscreen: true,
store: store
});