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

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

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

    eagle

    學(xué)無止境,細(xì)節(jié)決定成敗.
    posts - 12, comments - 11, trackbacks - 0, articles - 2
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    extjs 面向?qū)ο髮?shí)踐

    Posted on 2009-07-17 23:31 月下孤城 閱讀(2382) 評(píng)論(6)  編輯  收藏 所屬分類: extjs
    近期一個(gè)項(xiàng)目前臺(tái)采用了extjs框架,經(jīng)過一段時(shí)間的編碼,對(duì)extjs面向?qū)ο笠灿辛艘欢ǖ牧私狻R韵峦ㄟ^FormPanel擴(kuò)展對(duì)表單對(duì)象中常用代碼段進(jìn)行了通用提取,并以此實(shí)踐ext面向?qū)ο蟮睦^承,希望對(duì)剛接觸的朋友有所幫助。

    1.實(shí)現(xiàn)類構(gòu)造方法:
     1/*
     2 * 默認(rèn)表單類
     3 * add by daiqiang
     4 * */

     5Ext.ux.DefaultFormPanel = function(config){
     6        /*FormPanel submit按鈕url*/
     7        this.subBtnUrl = config.subBtnUrl;
     8    /*submit按鈕url提交參數(shù)*/
     9    this.subBtnParams = config.subBtnParams?config.subBtnParams:{};
    10   /*submit提交完成后回調(diào)方法*/
    11       this.subBtnCallbackFun = config.subBtnCallbackFun;
    12    /*submit 顯示文本*/
    13       this.subBtnText = config.subBtnText? config.subBtnText:'保存';
    14    /*
    15        * 重置按鈕定制方法
    16        * 【主要針對(duì)表單狀態(tài)為'修改'(非'新增')時(shí),
    17        * 提交表單數(shù)據(jù)可能含隱藏字段,
    18        * 若用reset方法將把隱藏字段值也一并清掉。
    19        * 考慮這種情況需自定義表單重置方法】
    20        * */

    21        this.resetBtnFun = config.resetBtnFun;
    22    
    23        Ext.ux.DefaultFormPanel.superclass.constructor.call(this, config);
    24}
    實(shí)現(xiàn)類構(gòu)造方法中先初始化屬性變量,然后調(diào)用繼承類的構(gòu)造方法,實(shí)現(xiàn)構(gòu)造方法的繼承擴(kuò)展。

    2.使用Ext.extend方式實(shí)現(xiàn)父類方法、屬性的繼承擴(kuò)展.
     1Ext.extend(Ext.ux.DefaultFormPanel,Ext.form.FormPanel,{
     2    frame:true,
     3    defaultType: 'textfield',
     4    labelAlign:'right', 
     5    bodyStyle:'padding:5px 5px 0',
     6    layout : 'form',
     7    buttonAlign : 'center',
     8    autoHeight:true,
     9 initComponent:function(){
    10        /*初始化提交、重置按鈕*/
    11        var oprBtns = [
    12            {
    13                text :this.subBtnText,
    14                id:'subFormBtn',
    15            handler :function(){
    16                this.getForm().submit({
    17                        url:this.subBtnUrl,
    18                        params:this.subBtnParams,
    19                        clientValidation: true,
    21                        method:'post', 
    22                        success:function(form, action){
    23//                               Ext.Msg.alert("Success", action.result.msg);
    24                               Ext.Msg.alert("信息", action.result.msg);
    25                               //執(zhí)行回調(diào)函數(shù)
    26                            if(this.subBtnCallbackFun){
    27                                   this.subBtnCallbackFun(this);
    28                                }
    ;
    29                         }
    .createDelegate(this),
    30                      failure: function(form, action){
    31                            switch (action.failureType){
    32                                case Ext.form.Action.CLIENT_INVALID:
    33//                                    Ext.Msg.alert("Failure", "Form fields may not be submitted with invalid values");
    34                                    Ext.Msg.alert("錯(cuò)誤""提交的表單數(shù)據(jù)無效,請(qǐng)檢查!");
    35                                    break;
    36                                case Ext.form.Action.CONNECT_FAILURE:
    37//                                    Ext.Msg.alert("Failure", "Ajax communication failed");
    38                                    Ext.Msg.alert("錯(cuò)誤""服務(wù)器連接失敗,請(qǐng)稍后再試!");
    39                                    break;
    40                                case Ext.form.Action.SERVER_INVALID:
    41//                                   Ext.Msg.alert("Failure", action.result.msg);
    42                                   Ext.Msg.alert("錯(cuò)誤", action.result.msg);
    43                           }

    44                        }
    .createDelegate(this)
    45                    }
    );
    46                }
    .createDelegate(this)
    47            }
    ,
    48        {    
    49                text:'重置',
    50                id:'resetFormBtn',
    51            handler:function(){
    52                    if(this.resetBtnFun){
    53                             this.resetBtnkFun(this);
    54                    }
    else{
    55                            this.getForm().reset();
    56                    }

    57                }
    .createDelegate(this)
    58            }

    59        ];
    60        
    61    if(this.buttons){
    62            for(var i=0;i<oprBtns.length;i++){
    63                     this.buttons.push(oprBtns[i]);
    64               }

    65     }
    else{
    66                 this.buttons = oprBtns;
    67         }

    68        
    69        Ext.ux.DefaultFormPanel.superclass.initComponent.apply(this, arguments);
    70    }

    71}
    )

    Ext.extendFunction subclass, Function superclass, [Object overrides] ),參數(shù)分別對(duì)應(yīng)'子類對(duì)象','父類對(duì)象','覆蓋擴(kuò)展父類方法屬性'。
    2-8行是對(duì)FormPanel的默認(rèn)設(shè)置。接下來就是對(duì)ext 組件方法initComponent的覆蓋實(shí)現(xiàn)(了解ext組件生命周期詳情點(diǎn)這里),該方法中主要實(shí)現(xiàn)默認(rèn)的提交、重置
    按鈕操作。注意在29行代碼success屬性方法后加了個(gè)createDelegate(this)方法,這主要是success方法中引用了類屬性this.subBtnCallbackFun,而success方法中的scope(域)
    和當(dāng)前類的scope不同,故通過Function類中的 createDelegate轉(zhuǎn)化到當(dāng)前域中。處理完自定義操作后別望了回調(diào)父類該方法,完成FormPanel的初始化工作。

    3.調(diào)用代碼片段
     1
               ...
                var formPanel = new Ext.ux.DefaultFormPanel({
     2                items:formItems,
     3               subBtnText:'新增',
     4               subBtnUrl : 'test/testDefaultForm.do',
                          subBtnParams:{id:'test'},   
                          items:items,  
                           subBtnCallbackFun:
    function(){
     5                        alert('回調(diào)方法');
     6                    }

     7                }
    );
     8           new Ext.Window({
     9                    width:310,
    10                    height:400,
    11                     layout :'fit',
    12                     items:[formPanel]
    13                }
    ).show();
    代碼執(zhí)行后會(huì)彈出一個(gè)包含'新增','重置'按鈕表單的窗口.點(diǎn)擊新增按鈕后會(huì)執(zhí)行一系列流程:表單效驗(yàn)通過->發(fā)送subBtnUrl到后臺(tái)接受數(shù)據(jù)->后臺(tái)數(shù)據(jù)接受調(diào)用回調(diào)方法,最后alert('回調(diào)方法');提示一個(gè)表單新增操作完成。



    ---------------------
    月下孤城
    mail:eagle_daiqiang@sina.com

    評(píng)論

    # re: extjs 面向?qū)ο髮?shí)踐  回復(fù)  更多評(píng)論   

    2009-07-17 23:42 by Gavin.lee
    hi 問你個(gè)問題,為什么你的頁(yè)面可以另存為 htm格式的呢,是你的哪里有設(shè)置嗎? 我的就不可以。也看過其他的blogjava,也是有的行,有的不行。如果你知道的話,請(qǐng)回復(fù)給我,謝謝了。doingjava@126.com 期待ing

    # re: extjs 面向?qū)ο髮?shí)踐  回復(fù)  更多評(píng)論   

    2009-07-17 23:48 by 月下孤城
    @Gavin.lee
    這個(gè)我到?jīng)]注意,寫隨筆的時(shí)候我就是按照系統(tǒng)默認(rèn)的編輯器寫的啊,沒有其他特別的設(shè)置。

    # re: extjs 面向?qū)ο髮?shí)踐  回復(fù)  更多評(píng)論   

    2009-07-18 11:06 by 凡客誠(chéng)品
    不錯(cuò) 來看看

    # re: extjs 面向?qū)ο髮?shí)踐  回復(fù)  更多評(píng)論   

    2009-07-18 22:44 by Gavin.lee
    呵,我找到原因了,是我勾選了 enable comments,不過這個(gè)應(yīng)該不管頁(yè)面保存的事吧,不知道算不算bug。

    # re: extjs 面向?qū)ο髮?shí)踐  回復(fù)  更多評(píng)論   

    2009-07-19 17:43 by 乾為天|天豬
    createDelegate(this) 沒必要.
    加個(gè)scope:this

    # re: extjs 面向?qū)ο髮?shí)踐  回復(fù)  更多評(píng)論   

    2009-07-19 21:05 by eagle--daiq
    @乾為天|天豬
    多謝這位兄弟,這種方式不錯(cuò),代碼也更簡(jiǎn)潔些。

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中国黄色免费网站| 亚洲一区二区三区国产精华液| 亚洲欧洲国产成人综合在线观看| 精品久久洲久久久久护士免费| 一二三四在线播放免费观看中文版视频 | 91免费国产精品| 97视频免费观看2区| 99re免费视频| 日本免费网站视频www区| 免费视频爱爱太爽了| 国产免费毛不卡片| 手机在线毛片免费播放| 午夜视频在线在免费| 日本二区免费一片黄2019| 免费看一级做a爰片久久| 亚洲一区二区三区乱码A| 亚洲日韩一页精品发布| 亚洲国产精品成人精品无码区在线 | 成人片黄网站色大片免费观看APP| 香蕉视频在线免费看| 日本卡1卡2卡三卡免费| 1000部拍拍拍18免费网站| 国产精品免费观看久久| 国产一区二区三区免费在线观看| 亚洲国产精品无码久久久久久曰| 亚洲精品无码av人在线观看| 久久精品a亚洲国产v高清不卡| 精品亚洲国产成人| 香港一级毛片免费看| a在线观看免费网址大全| 国产免费不卡视频| 又粗又硬又大又爽免费视频播放| 伊人婷婷综合缴情亚洲五月| 亚洲欧洲日产国产综合网| 最新亚洲春色Av无码专区 | 亚洲成人动漫在线| 亚洲色成人网站WWW永久四虎 | 亚洲日本VA午夜在线电影| www在线观看播放免费视频日本| 好紧我太爽了视频免费国产| 丁香花免费完整高清观看|