<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

    主站蜘蛛池模板: 亚洲区小说区图片区| 免费国产综合视频在线看| 亚洲精品tv久久久久久久久| japanese色国产在线看免费| 亚洲精品视频在线看| 日韩大片免费观看视频播放| 国产jizzjizz免费视频| 国产成人+综合亚洲+天堂| 亚洲AV网站在线观看| 一级毛片a免费播放王色电影| www.亚洲色图| a视频免费在线观看| 无码欧精品亚洲日韩一区| 99免费在线观看视频| 亚洲成aⅴ人片在线影院八| 一二三四免费观看在线电影| 亚洲欧美aⅴ在线资源| 四虎影视永久免费观看| 9i9精品国产免费久久| 久久久无码精品亚洲日韩京东传媒| 91精品国产免费久久久久久青草 | 777成影片免费观看| 亚洲欧洲日产专区| 四虎成人免费大片在线| 人体大胆做受免费视频| 亚洲国产另类久久久精品| 嘿嘿嘿视频免费网站在线观看| 亚洲爆乳大丰满无码专区| 亚洲国产91精品无码专区| 成人免费区一区二区三区 | 四虎影院永久免费观看| 国产中文字幕在线免费观看| 亚洲精品国产成人| 亚洲M码 欧洲S码SSS222| 久久久精品免费视频| 国产精品高清视亚洲一区二区 | 亚洲第一男人天堂| 中文字幕亚洲一区二区三区| 国产成人精品免费视频动漫| 男人的天堂av亚洲一区2区| 亚洲AV永久无码精品一百度影院|