Extjs 获取搜索字段的值,然后显示匹配结果sencha touch 2

Extjs 获取搜索字段的值,然后显示匹配结果sencha touch 2,extjs,sencha-touch,sencha-touch-2,sencha-touch-2.1,Extjs,Sencha Touch,Sencha Touch 2,Sencha Touch 2.1,我将搜索图标添加到我的选项卡面板中,该面板的导航视图包含停靠在顶部的工具栏中的搜索字段。我的问题是我想从searchfield获取值并将其发送到store以查找匹配项。如果有匹配项,我希望这些项显示在searchfield工具栏下方的列表中。我做了很多搜索,但我找不到任何相关的例子,帮助我。任何形式的帮助都将不胜感激 这是我的看法 items: [{ xtype: 'toolbar', docked: 'top', style: 'background:darkgray'

我将搜索图标添加到我的选项卡面板中,该面板的导航视图包含停靠在顶部的工具栏中的搜索字段。我的问题是我想从searchfield获取值并将其发送到store以查找匹配项。如果有匹配项,我希望这些项显示在searchfield工具栏下方的列表中。我做了很多搜索,但我找不到任何相关的例子,帮助我。任何形式的帮助都将不胜感激

这是我的看法

items: [{
    xtype: 'toolbar',
    docked: 'top',
    style: 'background:darkgray',
    items: [{
            xtype: 'searchfield',
            placeHolder: 'Search... '
    }, {
            xtype: 'button',
            iconCls: 'search',
            iconMask: true,
            ui: 'confirm',
            action: 'search-app'


    }]
 }, {//here I want to show my filtered data 
    xtype: 'list',
    itemId: 'searchlist',
    store: 'SearchItemStore',
    onItemDisclosure: true,
    emptyText: 'No data found!',
    itemTpl: '{Name}'
 }]
在我的控制器中,我调用按钮并添加如下功能:

mySearchFunction: function(element , e, eOpts) { 
    var searchPattern = this.getSearchFieldAction().getValue(); 
    var store = Ext.getStore('ProductStore');
    // here I want to set the param that has to send to the store proxy..I am really not sure how this works 
    store.find(fieldName, value, [startIndex], [anyMatch], [caseSensitive], [exactMatch] ); 
}

您正在寻找的是
store.filter()
方法

store.filter('fieldToSearch', searchPattern);
请参见此处的文档:

另一种选择是
store.filterBy()
,它将函数作为参数。如果函数返回
true
,则该记录将包含在筛选存储中。
文档:

您正在使用MVC吗?如果是这样,您如何控制点击搜索按钮时发生的情况?谢谢。它正在工作,但列表正在加载所有数据,然后它正在该列表中搜索。。我不希望列表在搜索前显示任何数据,当我们给出值时,它应该显示过滤后的数据。。你知道这件事吗?你什么时候把你的商店装好?商店里有
自动加载吗?我没有使用按钮..我使用的是searchfield键控,这样每个字母都会开始过滤。。所以第一次它工作正常,但第二次当我们开始输入字母时,它显示所有数据存储=this.getSearchList().getStore();这就是我在controller store.load()中使用的内容;store.filter('DESCRIPTION',filterPattern);异步存储加载,因此运行
store.load();store.filter(…)
不起作用
filter
需要在存储的回调中:
store.load(function(){store.filter(…);})