我使用这些演示实现了AccordionList 1)https://github.com/kawanoshinobu/Ext.ux.AccordionList 2)http://docs.kawanoshinobu.com/accordionlist/。手风琴列表显示得非常好。根据要求,需要在手风琴列表上实时搜索文本。 我只需要在不在子节点中的手风琴列表标题中搜索文本。搜索之后,如果手风琴标题符号应该能够展开并折叠这些标题。我已尝试使用此链接http://docs.sencha.com/touch/2.2.1/#!/example/search-list。它非常适合我已经应用于AccordionList的列表。它是从显示可用标头的标头中搜索,但我无法扩展标头,但它包含子节点(通过console.log(abc)查看子节点)。单击展开并折叠,正确执行代码,没有任何错误/问题。如需更多参考,我在下面提供了代码。任何人都可以告诉我如何在手风琴清单中实现这个吗?非常感谢。谢谢。
代码就在这里:
if(searchfield !== ""){
store.filter([{
property: "text",
value: searchfield,
anyMatch: true
//exactMatch:true
}]);
}
else{
store.clearFilter();
}
将此商店值分配给手风琴列表代码
var accordionlistContent = {
xtype: 'accordionlist',
//store: Ext.create('eGMonitorApp.store.TestsStore'),
store: store,
name: 'accordionList',
height: 500,
headerItemTpl: [
'<tpl if="this.isExpanded(values)">',
'<div class="testsstatus{status}"></div></div>',
'<div style="width:80%;margin-left: 10px" <tpl if="values.year">style="font-style:italic; "</tpl>>',
'{text}</div>',
'<div class="down"></div>',
'<tpl else>',
'<div class="testsstatus{status}"></div></div>',
'<div style="width:80%;margin-left: 10px"<tpl if="values.year">style="font-style:italic;"</tpl>>',
'{text}</div>',
'<div class="right"></div>',
'</tpl>'
].join(''),
contentItemTpl: [
'<div class="testsstatus{status}"></div></div>',
'<div style="margin-left: 10px" >{text}<div>'
].join(''),
useSelectedHighlights: false,
indent: true
}
展开/折叠代码:
doAllExpand: function() {
var me = this;
me.doAll(function expand(node) {
if (me.getAnimation()) {
me.addListExpandListeners(node);
}
node.expand();
if (!node.isLeaf()) {
node.childNodes.forEach(expand, me);
}
});
},
doAllCollapse: function() {
var me = this;
me.doAll(function collapse(node) {
node.collapse();
if (!node.isLeaf()) {
node.childNodes.forEach(collapse, me);
}
});
},
答案 0 :(得分:0)
我已经成功了。 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);
}
}
});