<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    duansky'weblog

    統計

    留言簿(3)

    友情鏈接

    閱讀排行榜

    評論排行榜

    Ext的組件結構分析,附Ext組件結構圖

    相信大家看了Ext2.0后, 印象最深的應該是Ext的組件模式,很好的規范了組件設計,用Manager的統一管理,也是很好的方式.下面簡單分析一下Ext的組件結構.

    Ext的所有組件都是擴展于Ext.Component, 而后子類擴展和集成形成了一個單根的組件樹.
    Ext中使用組件的方式很不一樣,可以看一個例子.
    var?formPanel?=?new?Ext.form.FormPanel({
    ????items?:?[
    {
    ????????xtype?:?'hidden',
    ????????name?:?'domainId'
    ????}
    ,?{
    ????????fieldLabel?:?'姓名',
    ????????name?:?'name',
    ????????allowBlank?:?
    false
    ????}
    ,?{
    ????????fieldLabel?:?'權限',
    ????????xtype?:?'combo',
    ????????name?:?'auth'
    ????}
    ,?{
    ????????fieldLabel?:?'帳號',
    ????????name?:?'account'
    ????}
    ,?{
    ????????fieldLabel?:?'Email',
    ????????name?:?'email',
    ????????vtype?:?'email'
    ????}
    ,?{
    ????????fieldLabel?:?'啟用',
    ????????xtype?:?'checkbox',
    ????????name?:?'enabled'
    ????}
    ]
    }
    );
    如此這樣就能實現一個包含了很多元素的表單, items里面定義了表單要顯示的輸入框等組件,但是items里面僅僅是簡單的json對象,怎么能顯示出來各種不同的表單元素呢?

    我們注意到items的每一個元素幾乎都有一個xtype屬性,這個xtype屬性就是描述組件類的關鍵.

    其實Ext里面的組件(Panel, Form Datepicker等等), 在定義完Class之后, 都會把自己注冊到Ext.ComponentMgr里面. 簡單看一個box的組件, 在BoxComponent.js文件的最后一行可以看到:
    Ext.reg('box',?Ext.BoxComponent);
    而在, ComponentMgr.js文件里
    #?//?private
    #?registerType?:?function(xtype,?cls){
    #?types[xtype]?
    =?cls;
    #?cls.xtype?
    =?xtype;
    #?}
    ,
    #
    #?
    //?private
    #?create?:?function(config,?defaultType){
    #?
    return?new?types[config.xtype?||?defaultType](config);
    #?}

    #?};
    #?}();
    #
    #?
    //?this?will?be?called?a?lot?internally,
    #?//?shorthand?to?keep?the?bytes?down
    #?Ext.reg?=?Ext.ComponentMgr.registerType;?
    其實是執行了registerType 這個方法,方法很簡單, 把xtype這個名字和對應的cls放到types里面, 而后看到create 我們應該會明白了, 以后想創建組件的時候,就調用 create({xtype: 'box'}) 就OK了

    那么我們看看items里面的元素是怎么創建的吧, form的繼承樹中有一個Ext.Container類, 恩,就在這個類里呢:
    1.??//?private
    ???2.?lookupComponent?:?function(comp){
    ???
    3.?if(typeof?comp?==?'string'){
    ???
    4.?return?Ext.ComponentMgr.get(comp);
    ???
    5.?}
    else?if(!comp.events){
    ???
    6.?return?this.createComponent(comp);
    ???
    7.?}

    ???
    8.?return?comp;
    ???
    9.?}
    ,
    ??
    10.
    ??
    11.?//?private
    ??12.?createComponent?:?function(config){
    ??
    13.?return?Ext.ComponentMgr.create(config,?this.defaultType);
    ??
    14.?}
    ,
    恩,基本就是這樣了, 希望對大家理解Ext有所幫助

    /************************* ***********************/
    附件是我弄的一個Ext的組件結構圖, 還附有各個組件的說明, 希望大家喜歡, 大家快下呀....



    轉自:http://m.tkk7.com/sshwsfc/archive/2007/10/20/154539.html

    posted on 2008-03-17 15:11 duansky 閱讀(482) 評論(0)  編輯  收藏 所屬分類: Ext

    主站蜘蛛池模板: 亚洲福利一区二区| 亚洲Aⅴ无码专区在线观看q| 亚洲天然素人无码专区| jjizz全部免费看片| 亚洲精品美女视频| 麻豆高清免费国产一区| 亚洲国产成人久久| 一区二区无码免费视频网站| 久久综合亚洲色一区二区三区| 99re这里有免费视频精品| 久久精品a亚洲国产v高清不卡| 99爱在线观看免费完整版| 亚洲日韩中文字幕| 青娱乐免费在线视频| 亚洲欧美日韩国产精品一区| 国产成人精品免费直播| www永久免费视频| 亚洲av无码无在线观看红杏| 久久久久久国产精品免费无码| 亚洲人成电影青青在线播放| 国产极品粉嫩泬免费观看| 一级毛片免费在线| 亚洲AV无码乱码国产麻豆穿越| 在线免费观看亚洲| 欧洲亚洲国产精华液| 国产亚洲日韩在线三区| 3d动漫精品啪啪一区二区免费| 香蕉大伊亚洲人在线观看| 亚洲成a人在线看天堂无码| 免费播放在线日本感人片| 亚洲国产日韩一区高清在线| 91免费资源网站入口| 农村寡妇一级毛片免费看视频| 亚洲国产精品一区二区第一页 | 最近最新高清免费中文字幕| 亚洲一区二区三区免费观看 | 国产伦精品一区二区三区免费迷| 国产特黄一级一片免费| 亚洲日本乱码一区二区在线二产线| 成年人免费观看视频网站| fc2免费人成在线|