我通过引用此链接实现了手风琴列表。 http://docs.kawanoshinobu.com/touch/#!/api/Ext.ux.AccordionList。手风琴在没有任何问题的情况下正常工作。我只需要在手风琴列表标题上搜索文本。搜索后,一旦获得手风琴标题。应该是,我能够扩展和折叠那些标题需要看到标题子项。我已应用商店过滤器,它是过滤商店并显示过滤后的数据(参见图片)。标题正在向右和向下图标上发生展开和折叠正在发生变化。但是无法在扩展模式下查看特定标头的子节点数据。子节点可用于该标头(在console.log()中可见)。 有没有其他方法可以为手风琴列表/树存储应用过滤器?非常感谢。谢谢。在上面的链接本身我已经应用了商店过滤器,它的行为与我在我的代码上面临的问题相同。在下面的代码我传递过滤器文本'到'。它今天过滤了,非常好。 但是当点击展开时,子节点不可见。
代码在这里:
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
});
答案 0 :(得分:-1)
我已经成功了。 store.filter函数,很好地过滤文本,但如果它有子节点也不会显示。因为我们在商店搜索了一些特定的文字。过滤器后只显示那些过滤器文本。我走了另一条路。它按照我的要求工作得非常好。我正在调用web服务store.load()。 在商店中搜索输入的文字。如果输入的文本在父级别不可用,则删除该特定项目形式存储。迭代后,最终商店分配到手风琴列表。手风琴列表显示相关的搜索文本数据。干杯:)。下面是代码。谢谢。
store.getProxy().setUrl('resources/Json/TestsStore.json');
store.load({
scope: this,
callback: function(records, operation, success) {
if (success) {
if(searchfield !=="") {
if(store.data.items.length !==0){
var length = store.data.items.length;
for(var j=length; j--;) {
if(store.data.items[j].data.name.search(new RegExp(searchfield, "i")) ===-1){
store.data.items[j].remove();
}
}
}
}
if(store.data.items.length ===0){
eGMonitorApp.util.Utility.showAlert('Searched text not available.','Tests');
}
this.getAccordionListRef().setStore(store);
}
}
});