在 Sencha Touch 2 搜索列表中需要帮助

Posted

技术标签:

【中文标题】在 Sencha Touch 2 搜索列表中需要帮助【英文标题】:Need Help In Sencah Touch 2 Search List 【发布时间】:2012-05-15 07:53:27 【问题描述】:

我在构建煎茶搜索列表时无法达到我想要的确切结果,我设法只构建了一个列表,但我想要的实际结果就像这样http://docs.sencha.com/touch/2-0/#!/example/search-list 我已经按照示例构建了类似的东西,但是我的 serach 无法正常工作,希望有人可以详细回答我如何实现这一目标。下面是我从控制器到最后的代码。

这是我的控制器 Ext.define('List.controller.Main', 扩展:'Ext.app.Controller',

config: 
    refs: 
        main: 'mainpanel'
    ,
    control: 
        'presidentlist': 
            disclose: 'showDetail'
        
    
,

showDetail: function(list, record) 
    this.getMain().push(
        xtype: 'presidentdetail',
        title: record.fullName(),
        data: record.getData()
    )

); 这是我的模型

Ext.define('List.model.President', 
extend: 'Ext.data.Model',
config: 
    fields: ['firstName', 'middleInitial', 'lastName']
,

fullName: function() 
    var d = this.data,
    names = [
        d.firstName,
        (!d.middleInitial ? "" : d.middleInitial + "."),
        d.lastName
    ];
    return names.join(" ");

);

这是我的店

Ext.define('List.store.Presidents', 
extend: 'Ext.data.Store',

config: 
    model: 'List.model.President',
    sorters: 'lastName',
    grouper : function(record) 
        return record.get('lastName')[0];
    ,
    data: [
         firstName: "George", lastName: "Washington" ,
         firstName: "John", lastName: "Adams" ,
         firstName: "Thomas", lastName: "Jefferson" ,
         firstName: "James", lastName: "Madison" ,


    ]

); 这是我的视图,在我的视图文件夹下,

Ext.define('List.view.Main', 
extend: 'Ext.navigation.View',
xtype: 'mainpanel',
requires: [
    'List.view.PresidentList',
    'List.view.PresidentDetail'
],

config: 
    items: [
        xtype: 'presidentlist'
    ]

);

仍在我的视图文件夹PresidentDetail下

Ext.define('List.view.PresidentDetail', 
extend: 'Ext.Panel',
xtype: 'presidentdetail',

config: 
    title: 'Details',
    stylehtmlContent: true,
    scrollable: 'vertical',
    tpl: [
        'Why Not Work firstName  lastName!'
    ]

);

仍然在我的视图文件夹下,我还有另一个名为 PresidentList 的文件

Ext.define('List.view.PresidentList', 
extend: 'Ext.List',
xtype: 'presidentlist',
requires: ['List.store.Presidents'],

config: 
     xtype:'container',
    title: 'Why Not Work',
    grouped: true,
    itemTpl: 'firstName lastName',
    styleHtmlContent: true,
    store: 'Presidents',
    onItemDisclosure: true,

     items: [

            

            xtype: 'searchfield',
                name:'searchfield',
                placeHolder:'Search',
            ,

         

            xtype: 'spacer',
               height: 25
            ,
           ] 

);

这是我的 App.js 文件

Ext.应用程序( 名称:'列表',

requires: [
    'Ext.field.Search'
],

controllers: ['Main'],
views:  ['Main'],
stores: ['Presidents'],
models: ['President'],

launch: function() 
    Ext.Viewport.add(
        xtype: 'mainpanel'
    );

);

很抱歉,我必须在这里发布我的整个应用程序,我只是想让我的问题尽可能详细。目前,我当前的应用程序显示为这样,但搜索字段不起作用。我需要帮助,谢谢

我真的需要帮助。我希望达到的结果是这样的,这样一旦用户要搜索该字段,从 R 开始存储的名称列表都会显示出来:

感谢您的帮助。

【问题讨论】:

这里是 Sencha Touch 文档中演示的搜索列表代码try.sencha.com/touch/2.0.0/examples/list-search 希望对您有所帮助 【参考方案1】:

您实际上需要监听搜索字段的修改并根据值过滤商店。

这是您需要对控制器进行的修改:

config: 
    refs: 
        main: 'mainpanel'
    ,
    control: 
        'presidentlist': 
            disclose: 'showDetail'
        ,

        'searchfield': 
            keyup: 'doSearch'
        
    
,

showDetail: function(list, record) 
    this.getMain().push(
        xtype: 'presidentdetail',
        title: record.fullName(),
        data: record.getData()
    )
,

doSearch: function(field) 
    var value   = field.getValue(),
        store   = this.getPresidentList().getStore(),
        query   = new RegExp(value, 'i');

    store.filter('firstName', query)

另外,我会在模型中添加另一个字段,该字段结合了名字和姓氏(例如 fullName)并针对它进行搜索。

【讨论】:

嗨,Grgur,我仍在等待您将字段添加到我的模型中,该模型将结合名字和姓氏。请帮帮我,谢谢 in Model: fields: ['firstName', 'middleInitial', 'lastName', name: 'fullName', mapping: 'firstName', convert: function (value, rec) return value + ' ' + rec.get('姓氏'); ]

以上是关于在 Sencha Touch 2 搜索列表中需要帮助的主要内容,如果未能解决你的问题,请参考以下文章

Sencha touch 2 面板内的列表

嵌套列表返回按钮 sencha touch 2

如何使 dataview.list 在 Sencha Touch 2 中可见?

Sencha Touch 2:如何在导航视图中显示列表?

Sencha Touch 在导航栏中水平居中搜索字段

如何在 VBOX 布局中显示 Sencha Touch 列表?