Sencha Touch 2.0 组件:Carousels、List、TabPanel 之用法简介

Carousels 组件

Carousels,翻译过来“传送带”的意思,顾名思义,仿佛屏幕背后就有一传送带,用户发出向左或向右的指令,即可命令传送带“移动”。移动设备上的屏幕就是当前显示的内容。在中间的那个“一点点”图案即为指示器,指示器可以告诉你剩余有多种张待现实的页面。

与其他组件那样,Carousels 可适用于水平或垂直的方向。下面例子将建立一个简单的水平方向的 Carousels 组件:

Ext.create('Ext.Carousel', {
    fullscreen: true,

    defaults: {
        styleHtmlContent: true
    },

    items: [
        {
            html : 'Item 1',
            style: 'background-color: #5E99CC'
        },
        {
            html : 'Item 2',
            style: 'background-color: #759E60'
        },
        {
            html : 'Item 3'
        }
    ]
});

试试在这个组件上面滑动一下手指,组件就会响应你产生切换的效果,当然同时也会更新指示器。下面是一个垂直方向的例子:

Ext.create('Ext.Carousel', {
    fullscreen: true,
    direction: 'vertical',

    defaults: {
        styleHtmlContent: true
    },

    items: [
        {
            html : 'Item 1',
            style: 'background-color: #759E60'
        },
        {
            html : 'Item 2',
            style: 'background-color: #5E99CC'
        }
    ]
});

以上代码效果如下:

毫无疑问,Carousels 即是一个容器,所以我们可以放任何东西在里面,好比下面的,我们把一个列表组件和表单组件分别放入 Carousels 里头:

Ext.create('Ext.Carousel', {
    fullscreen: true,

    items: [
        {
            xtype: 'list',

            items: {
                xtype: 'toolbar',
                dock: 'top',
                title: 'Sencha Touch Team'
            },

            store: {
                fields: ['name'],
                data: [
                    {name: 'Rob'},
                    {name: 'Ed'},
                    {name: 'Jacky'},
                    {name: 'Jamie'},
                    {name: 'Tommy'},
                    {name: 'Abe'}
                ]
            },

            itemTpl: '{name}'
        },
        {
            xtype: 'fieldset',
            items: [
                {
                    xtype: 'toolbar',
                    dock: 'top',
                    title: 'Login'
                },
                {
                    xtype: 'textfield',
                    label: 'Name'
                },
                {
                    xtype: 'passwordfield',
                    label: 'Password'
                }
            ]
        }
    ]
});

以上代码效果如下:

List 组件

List 组件的意思就是把 Store 里的数据渲染成为页面上的一笔笔条目。List 属于 DataView 的子类,继承了 DataView 的大部分能力。List 在 DataView de 基础上加入属于其自身的能力有:

  • 将个条目项进行分组,还可以制作索引条(index bar)、固定头部(pinned header)
  • 为每一个项设置反闭包式(disclosure)的图标
  • 为每一个项设置图标和标签

试试渲染一个 List,用静态的数据:

Ext.create('Ext.List', {
    store: {
        fields: ['name'],
        data: [
            {name: 'Cowper'},
            {name: 'Everett'},
            {name: 'University'},
            {name: 'Forest'}
        ]
    },

    itemConfig: {
        tpl: '{name}'
    }
});

执行以上代码,其中一个步骤就是会替 Store 里面的每一笔记录渲染一个 ListItem。下面的工作是为 List 添加事件侦听器:

Ext.create('Ext.List', {
    listeners: {
        select: function() {
            alert('tapped on ' + )
        }
    },

    //store and itemConfig as before
});

加载远程数据

若要从 WebService 那里获取远程数据,这种场景也是非常常见的。该怎么做?

使用 TabPanel

Tab 面板在用户切换多个页面的时候非常有用。Tab 面板中包含多个 Tab,每个单独的 Tab 又是一个个 Component 组件。当点击候选栏时便会显示 Tab。候选栏既可以在屏幕的上方,也可以位于下方。候选栏可以制定其标题 title 及 图标 icon。

下面就是一个位于底部的 Tab Panel 例子:

Ext.create('Ext.TabPanel', {
    fullscreen: true,
    tabBarPosition: 'bottom',

    defaults: {
        styleHtmlContent: true
    },

    items: [
        {
            title: 'ddd',
            iconCls: 'home',
            html: 'fdfdsfdsdfds Screen'
        },
        {
            title: 'Contact',
            iconCls: 'user',
            html: 'Contact Screen'
        }
    ]
});

以上代码效果如下:

面板中的每一个子 Tab 都被定义在 items 的数组之中。Tab 配置的方法也非常简单,代码如下(不过这是位于顶部的候选栏):

Ext.create('Ext.TabPanel', {
    fullscreen: true,

    defaults: {
        styleHtmlContent: true
    },

    items: [
        {
            title: 'Home',
            html: 'Home Screen'
        },
        {
            title: 'Contact',
            html: 'Contact Screen'
        }
    ]
});

以上代码效果如下

动画 Animation

Tab 面板默认情况下,Tab 面板切换的时候是带有“滑动(slide)”的动画效果的。如果你想改变默认的动画效果,可以在 layout 下面的 animation 配置项中作修改。比如现在我们修改为“渐褪(fade)”的效果:

Ext.create('Ext.TabPanel', {
    fullscreen: true,

    defaults: {
        styleHtmlContent: true
    },

    layout: {
        type: 'card',
        animation: {
            type: 'fade'
        }
    },

    items: [
        {
            title: 'Home',
            html: 'Home Screen'
        },
        {
            title: 'Contact',
            html: 'Contact Screen'
        }
    ]
});

由于 Tab 式面板是采用“卡式布局的(Card Layout)”,故所以 layout 必须指定为“card”。

时间: 2024-10-27 17:54:57

Sencha Touch 2.0 组件:Carousels、List、TabPanel 之用法简介的相关文章

sencha touch2.0和sencha touch 2.1的区别在哪

问题描述 sencha touch2.0和sencha touch 2.1的区别在哪 sencha touch 2.1能兼容sencha touch 2.0所有的方法吗

预览 Sencha Touch 2:原生包和性能改进

http://www.sencha.com/blog/sencha-touch-2-what-to-expect/ 作者:Aditya Bansod 译者:Sp42(zhangxin09) 今天,我们提前为大家介绍一下 Sencha Touch  2.0的新功能.我们十分雀跃地告诉大家将要到来的新发布,我们希望你们通过开发了一些给力的移动应用来实际参与分享我们这一份雀跃. 让我们先快速回顾一下.自去年发布 Sencha Touch 最初版本,这一期间,HTML5 和移动网络的发展也突飞猛进.许多

sencha touch 模仿tabpanel导航栏TabBar的实例代码_javascript技巧

基于sencha touch 2.2所写 代码: 复制代码 代码如下: /**模仿tabpanel导航栏*/Ext.define('ux.TabBar', {    alternateClassName: 'tabBar',    extend: 'Ext.Toolbar',    xtype: 'tabBar',    config: {        docked: 'bottom',        cls: 'navToolbar',        layout: {           

sencha touch container组件添加单击事件

问题描述 sencha touch container组件添加单击事件 如题 请大神指教 shencha toucha的container的单击事件怎么加 API中没有这个组件的单击事件 请大神指教 解决方案 试下 tap:{ } 记不太清了

Sencha Touch xtype对应的class

  Sencha Touch 2的有效xtype   xtype Class ----------------- --------------------- actionsheet Ext.ActionSheet audio Ext.Audio button Ext.Button component Ext.Component container Ext.Container image Ext.Img label Ext.Label loadmask Ext.LoadMask map Ext.M

如何用Sencha Touch打包Android的APK

什么是Sencha Touch 前不久基于JavaScript编写的Ajax框架ExtJS,将现有的ExtJS整合JQTouch.Raphaël库,推出适用于最前沿Touch Web的Sencha Touch框架,该框架是世界上第一个基于HTML5的Mobile App框架.同时,ExtJS更名为Sencha,JQTouch的创始人David Kaneda,以及Raphaël的创始人也已加盟Sencha团队.(摘自Bing Knows) 通过Sencha Touch可以快速开发跨平台移动应用,无

前端是Sencha Touch+ Cordova(转)

从13年初开始,我的关注点一直在两个点上,一个是股票,一个是移动前端和大数据技术,互联网金融的发展会让互联网证券越来越火热,当然,我也希望将这两个关注点结合到一起,做一些事情.   现在,我的APP和微信公众号已经上线,每天下班都会花一个多小时的时间在他们的开发上,每天白天脑子里基本都在想,怎么去改进.完善.还能做哪些有意义的新功能,然后晚上把代码写出来,这期间不仅有技术上的补充,还包括对股市投资的一些知识补充,我老婆说我已经着了魔了,陪她出来逛街时都不在状态..   随着对股票投资的理解,我的

Sencha Touch logo手机上的HTML5框架 Sencha Touch

问题描述 Sencha Touch是专门为**设备开发应用的Javascript框架.通过Sencha Touch你可以创建非常像native app的web app,用户界面组件和数据**全部基于HTML5和CSS3的web标准,全面兼容Android和Apple iOS.

Sencha Touch 2 Release Candidate 发布总结

这次发布新版的 ST2(下载:http://cdn.sencha.io/touch/sencha-touch-2-rc.zip),将为我们带来什么呢?以下就我阅读了 Sencha 官方博客文章后,做的一些笔记. 一.新提供了六个例子 新提供例子的话不足为奇,若那些是完整的实例完全来呈现给用户的话,则最好不过.这次发布的 ST 真的做到这点,都是一些实际上应用到的例子.这不,咱们要快速开发的朋友则有福了,马上有现成的例子可供参考--些许改动即可. 二.Ext.Direct 话说无论 ExtJS 还