0

我已经使用这些演示实现了 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);
            }
        });
    },
4

1 回答 1

0

我已经达到了。store.filter 函数,很好地过滤文本,但如果它有子节点也不会显示。因为我们在商店中搜索了一些特定的文本。过滤器后仅显示那些过滤器文本。我走了另一条路。根据我的要求,它工作得很好。我正在调用网络服务 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);
                    }
                }
            });
于 2013-08-14T08:55:53.467 回答