javascript – 用sencha触摸按钮导航

前端之家收集整理的这篇文章主要介绍了javascript – 用sencha触摸按钮导航前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我用Sencha触摸我的第一步.结果就是我之后,到达那里是一个斗争,以获得如何组合在一起.我慢慢地想出来,但有时代码的工作方式有点WTF.

我正在尝试构建一个非常简单的应用程序,执行以下操作.

1)有三个选项卡,附近搜索(geo),快速关键词搜索,类别搜索.
2)每个选项卡搜索返回​​结果列表
3)每个行都可点击显示更多信息.

我已经弄清楚了我的想法.

像这样:

Ext.setup({
    tabletStartupScreen: 'tablet_startup.png',phoneStartupScreen: 'phone_startup.png',icon: 'icon.png',glossOnIcon: false,onReady: function() {

                var location = new Ext.Container({
            iconCls: 'search',title: 'Location Search',items: [new Ext.Component({
                html: '<img src="images/gfb.gif" />'
            })]
        });

        var quick = new Ext.Container({
            iconCls: 'search',title: 'Quick Search',scroll: 'vertical',items: [new Ext.Component({
                html: '<img src="images/gfb.gif" />'
            })]
        });

        var category = new Ext.Component({
            iconCls: 'search',title: 'Category Search',html: '<img src="images/gfb.gif" /><p>Category</p>'
        });
        var tabpanel = new Ext.TabPanel({
            fullscreen: true,tabBar: {
                dock: 'bottom',scroll: 'horizontal',sortable: false,layout: {
                    pack: 'center'
                }
            },cls: 'card1',items: [
                location,quick,category
            ]
        });
    }
});

这很好.我知道的标签之间没有区别,但我正在建立

对,我想要处理的第一件事是关键字搜索标签,因为这是测试这个应用程序的最简单的一个.

所以我添加一个表单.

var quickFormBase = {
                url: "../quicksearch.PHP?output=json",items: [{
                   xtype: 'fieldset',instructions: 'The keyword search is great if you know the name of the company you are looking for,or the particular service you need to find.<p><br />To narrow it down to an area include the town or county name in your query</p>',defaults: {
                       required: false,labelAlign: 'left'
                   },items: [{
                           xtype: 'textfield',label: 'Search',name : 'inpquery',showClear: true,autoCapitalize : false
                       }]
            }],listeners : {
                submit : function(form,result){
            console.log('results',result.SearchResults.MainResults.Advert);
                },exception : function(form,result){
                    console.log('failure',Ext.toArray(arguments));
                }
            }
    };

var quickForm = new Ext.form.FormPanel(quickFormBase);

所以我的快速选项卡配置现在看起来像这样:

var quick = new Ext.Container({
            iconCls: 'search',items: [new Ext.Component({
                html: '<img src="images/gfb.gif" />'
            }),quickForm]
});

我现在有一个表单看起来我想要什么,并挂在我的json搜索和返回广告到控制台.大!

现在我想创建一个列表视图,它有一个带有后退按钮的顶部栏.这个我相当肯定不是设置这个的方法,但是我真的很努力地找到关于如何做这个的例子,因为源的例子有一个复杂的设置,简单的不做我以后.

我现在在我的index.js文件的顶部添加一个模型配置来定义我的广告模型

Ext.regModel('Advert',{
    fields: [
             {name: 'advertid',type:'int'},{name: 'Clientname',type:'string'},{name: 'telephone',{name: 'mobile',{name: 'fax',{name: 'url',{name: 'email',{name: 'additionalinfo',{name: 'address1',{name: 'address2',{name: 'address3',{name: 'postcode',{name: 'city',{name: 'Countyname',{name: 'longitude',{name: 'latitude',type:'string'}
    ]
});

在我的表单成功监听器中,我执行以下操作:

listeners : {
                submit : function(form,result){

                    var quickstore = new Ext.data.JsonStore({
                        model  : 'Advert',data : result.SearchResults.MainResults.Advert
                    });

                    var listConfig = {
                            tpl: '<tpl for="."><div class="advert">{Clientname}</div></tpl>',scope: this,itemSelector: 'div.advert',singleSelect: true,store: quickstore,dockedItems: [
                                            {
                                                xtype: 'toolbar',dock: 'top',items: [
                                                    {
                                                        text: 'Back',ui: 'back',handler: function(){
                                                            //Do some magic and make it go back,ta!
                                                        }
                                                    }
                                                ]
                                            }
                                        ]
                    };
                    var list = new Ext.List(Ext.apply(listConfig,{
                        fullscreen: true
                    }));
                },Ext.toArray(arguments));
                }
        }

这样做是不会像我想要的那样滑动,就像点击底部标签栏中的图标一样.

现在这是我跌倒的地方,我无法弄清楚我如何使后退按钮工作,让我回到关键字搜索.

我已经找到了setCard和setActiveItem,但我似乎无法访问结果侦听器函数中的“this”上下文中的那些.

有人可以给出一个如何做到这一点的简单例子吗?

解决方法

解决这个问题的最简单方法可能是通过给你的TabPanel一个id,然后在你的处理程序中引用它.尝试更新您的tabpanel,如下所示:
var tabpanel = new Ext.TabPanel({
    id: 'mainPanel',... the rest of your config here

和你的后退按钮处理程序,如下所示:

handler: function() {
    Ext.getCmp('mainPanel').layout.setActiveItem(0);
}

这将移动到标题板(您的位置卡)中的第一张卡.

或者,如果要在handler函数修改“this”的值,只需传递一个范围:

text: 'Back',scope: tabpanel,handler: function(){
    this.layout.setActiveItem(0);
}

‘this’现在指的是您在范围配置中传递的任何内容.看到人们使用“范围:这个”是很常见的,所以他们的处理程序中的’这个’与处理程序之外的’这个’相同.

猜你在找的JavaScript相关文章