Sencha Touch学习笔记(二)组件

上一篇了解到Sencha Touch的类之后,现在让我们来了解一下Sencha Touch强大的组件吧。
注:本文大部分案例来自于官网API。

组件(Components)

大部分你能与之互动的可视化的类都属于组件,Sencha Touch中所有的组件都继承自Ext.Component。他们都有如下特性:
1. 使用template把自己加载到页面上;
2. 可以在任何情况下显示或者隐藏;
3. 可以定位到屏幕中心;
4. 可以启用或者禁用。

还有获取事件:
1. 浮Float 到其它组件上(窗口,消息框,覆盖overlays);
2. 改变大小和位置;
3. dock(用于toolbar)
4. 对齐Align, dragged拖拽, scrollable滚动 等等。

容器(Container)

如panel等容器还有以下几种功能:
1. 在实例化或者运行时添加子组件;
2. 移除子组件;
3. 设定布局layout。

有关于Layout会在以后进行详细的描述。

实例化组件

实例化组件的方法和类相同,如下:

var panel = Ext.create('Ext.Panel', {
    html: 'This is my panel'
});

上面我们实例化了一个简单的panel,但是它不会立刻显示到屏幕上,可以通过以下的方式:

Ext.Viewport.add(panel);

将panel加载到全局视图。

上面我们提到了Panel也是个容器,下面的例子里,panel包含了两个组件并且采用了hbox的布局:

Ext.application({
    name : 'Sencha',

    launch : function() {       
        var panel = Ext.create('Ext.Panel', {
            layout: 'hbox',

            items: [
                {
                    xtype: 'panel',
                    flex: 1,
                    html: 'Left Panel, 1/3rd of total size',
                    style: 'background-color: #5E99CC;'
                },
                {
                    xtype: 'panel',
                    flex: 2,
                    html: 'Right Panel, 2/3rds of total size',
                    style: 'background-color: #759E60;'
                }
            ]
        });

        Ext.Viewport.add(panel);
    }
});

有如下显示:
panel

其中的两个子组件也是Ext.Panel,但采用了xtype的方式定义,更简洁一些,创建一个容器,包含子组件时,这是特别有用的,说的直白一点,xtype是组件的小名。有关Sencha Touch组件的xtype可以查询API 的头部位置:
这里写图片描述

这里简单说一下hbox的布局,子组件把父组件的宽度分了3份,一个占了1份,一个占了2份。

配置组件

组件提供了很多的配置项,可以在API中查询:

Ext.application({
    name : 'Sencha',

    launch : function() {       
        //we can configure the HTML when we instantiate the Component
        var panel = Ext.create('Ext.Panel', {
            fullscreen: true,
            html: 'This is a Panel'
        });

        //we can update the HTML later using the setHtml method:
        panel.setHtml('Some new HTML');

        //we can retrieve the current HTML using the getHtml method:
        Ext.Msg.alert(panel.getHtml()); //alerts "Some new HTML"
    }
});

这里的fullscreen是指当加载到Ext.Viewport时,100%的宽度和高度可用。
组件的配置同类一样都提供了getter和setter方法。

其他方法

当一个容器已经定义好了之后,还想动态的给它添加一个组件怎么办呢?很简单,调用对象的add()方法.
比如:mainPanel.add(aboutPanel);
移除就调用remove()
比如:mainPanel.remove(aboutPanel);

最开始我们提到了可以让组件显示或者隐藏,使用的方法如下:

mainPanel.hide();
mainPanel.show();
事件Events

所有组件的事件可以通过 listeners 配置项进行监听和操作,下面我们实例化一个文本框,给他的change事件加了一个监听,当监听到change时执行一个操作:

Ext.create('Ext.form.Text', {
    label: 'Name',
    listeners: {
        change: function(field, newValue, oldValue) {
            myStore.filter('name', newValue);
        }
    }
});
销毁组件

因为手机的内存有限,当开发实际的项目时可能需要对组件进行销毁,我们可以调用如下方法:mainPanel.destroy();

有关于组件的部分已经介绍完了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值