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

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

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

    duansky'weblog

    統(tǒng)計

    留言簿(3)

    友情鏈接

    閱讀排行榜

    評論排行榜

    Ext的組件結(jié)構(gòu)分析,附Ext組件結(jié)構(gòu)圖

    相信大家看了Ext2.0后, 印象最深的應(yīng)該是Ext的組件模式,很好的規(guī)范了組件設(shè)計,用Manager的統(tǒng)一管理,也是很好的方式.下面簡單分析一下Ext的組件結(jié)構(gòu).

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

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

    其實(shí)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;?
    其實(shí)是執(zhí)行了registerType 這個方法,方法很簡單, 把xtype這個名字和對應(yīng)的cls放到types里面, 而后看到create 我們應(yīng)該會明白了, 以后想創(chuàng)建組件的時候,就調(diào)用 create({xtype: 'box'}) 就OK了

    那么我們看看items里面的元素是怎么創(chuàng)建的吧, 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的組件結(jié)構(gòu)圖, 還附有各個組件的說明, 希望大家喜歡, 大家快下呀....



    轉(zhuǎn)自:http://www.tkk7.com/sshwsfc/archive/2007/10/20/154539.html

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

    主站蜘蛛池模板: 99精品免费视频| fc2成年免费共享视频网站| 67194成手机免费观看| 亚洲无线观看国产精品| 国产黄在线播放免费观看| 亚洲国产精品尤物yw在线| 老外毛片免费视频播放| 亚洲国产精品自在拍在线播放| 国产亚洲精品精品精品| 亚洲高清成人一区二区三区| 色多多www视频在线观看免费| 亚洲爽爽一区二区三区| 国产成人无码免费看片软件 | 丁香花在线观看免费观看图片| 亚洲国产精品无码久久久久久曰| 国产成人1024精品免费| 亚洲成人在线电影| 国产91色综合久久免费| 一本色道久久88亚洲精品综合 | 亚洲va久久久久| 日本一线a视频免费观看| 日韩精品无码免费视频| 亚洲人成色77777| 2021国产精品成人免费视频| 亚洲av日韩av无码av| 国产在线观看免费不卡| 中文字幕在线视频免费观看 | 在线观看人成视频免费| 黄色一级免费网站| 亚洲AV电影院在线观看| 欧美a级在线现免费观看| 日本一区二区在线免费观看| 国产精品久久久亚洲| 国产精品久久久久久久久久免费| 欧美亚洲国产SUV| 久久精品亚洲综合一品| 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 成全视频免费观看在线看| 亚洲人成综合在线播放| 亚洲高清免费视频| 99视频在线精品免费|