無廢話ExtJs 入門教程二十一[繼承:Extend]


朋友炒股兩個月賺了10萬,我幫他推廣一下公眾號,把錢用來投資總比放銀行連通貨膨脹都跑不過里強硬核離職,在家炒股 ,這是他每天的日志,有些經驗是花錢也買不到的。

在開發中,我們在使用視圖組件時,經常要設置寬度,高度,標題等屬性。而這些屬性可以通過“繼承”定義在我們定義的新組件中,從而達到重用的目地。

1.代碼如下:

  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2 <html xmlns="http://www.w3.org/1999/xhtml">
  3 <head>
  4     <title></title>
  5     <!--ExtJs框架開始-->
  6     <script type="text/javascript" src="/Ext/adapter/ext/ext-base-debug.js"></script>
  7     <script type="text/javascript" src="/Ext/ext-all-debug.js"></script>
  8     <link rel="stylesheet" type="text/css" href="/Ext/resources/css/ext-all.css" />
  9     <!--ExtJs框架結束-->
 10     <script type="text/javascript">
 11         Ext.onReady(function () {
 12             //----------------繼承前開始---------------//
 13             var Panel1 = new Ext.Panel({
 14                 title: '標題',
 15                 width: 500,
 16                 height: 100,
 17                 html: '好好學習'
 18             });
 19             var Panel2 = new Ext.Panel({
 20                 title: '標題',
 21                 width: 500,
 22                 height: 100,
 23                 html: '天天向上'
 24             });
 25             //----------------繼承前結束---------------//
 26             //----------------繼承后開始---------------//
 27             var MyPanel = Ext.extend(Ext.Panel, {
 28                 title: '標題',
 29                 width: 500,
 30                 height: 100
 31             });
 32             var MyPanel1 = new MyPanel({
 33                 html: '好好學習'
 34             });
 35             var MyPanel2 = new MyPanel({
 36                 html: '天天向上'
 37             });
 38             //----------------繼承后結束---------------//
 39             //定義新的類FormPanel,並且把變化的屬性暴露出來以便以后繼承
 40             var MyFormPanel = Ext.extend(Ext.form.FormPanel, {
 41                 title: '屬性外露',
 42                 width: 500,
 43                 labelWidth: 80,
 44                 initComponent: function () {
 45                     this.items = [{
 46                         xtype: 'textfield',
 47                         fieldLabel: '姓名',
 48                         id: this.usernameid,//變化的部份
 49                         name: 'username',
 50                     }];
 51                     this.buttons = [{
 52                         text: '確 定',
 53                         handler: this.submit,//變化的部份
 54                         scope: this
 55                     }, {
 56                         text: '取 消',
 57                         handler: this.cancel,//變化的部份
 58                         scope: this
 59                     }];
 60                     MyFormPanel.superclass.initComponent.call(this, arguments); //調用父類的initComponent
 61                 }
 62             });
 63             //創建測試對象1
 64             var testForm1= new MyFormPanel({
 65                 usernameid:'username',
 66                 submit: function () {
 67                     alert(Ext.getCmp('username').getValue());
 68                 },
 69                 cancel: function () {
 70                     testForm1.getForm().reset();
 71                 }
 72             });
 73             //創建測試對象2
 74             var testForm2=new MyFormPanel({
 75                 title: '覆蓋屬性',
 76                 usernameid:'usernameid',
 77                 submit: function () {
 78                     alert(this.usernameid);
 79                 },
 80                 cancel: function () {
 81                     testForm2.getForm().reset();
 82                 }
 83             });
 84             //創建窗體
 85             var win = new Ext.Window({
 86                 title: '窗口',
 87                 id: 'window',
 88                 width: 500,
 89                 height: 620,
 90                 resizable: true,
 91                 closable: true,
 92                 maximizable: true,
 93                 minimizable: true,
 94                 items: [Panel1, Panel2, MyPanel1, MyPanel2, testForm1,testForm2]
 95             });
 96             win.show();
 97         });
 98     </script>
 99 </head>
100 <body>
101     <!--
102 說明:
103 (1)var MyPanel = Ext.extend(Ext.Panel, {
104                 title: '標題',
105                 width: 500,
106                 height: 100
107             });
108     Ext.extend 用來繼承已有的類 這里給 title,width,height加上了默認值
109     第12行至37行,簡單介紹了組件的繼承,如:平時我們在用MessageBox.show()時,一般會有4種情況,“成功”,“失敗”,“出錯”,“確認”。。
110     我們通過簡單的繼承,就可以把這4類文本框封裝的很好,每次使用時new我們的新類即可。
111 (2)第38--82行,我做了個組件套用子組件的例子,給組件附加子組件須在 initComponent: function () {} 初始化組件時加入,
112     並且在完成后,還要顯示的調用  MyFormPanel.superclass.initComponent.call(this, arguments); //調用父類的initComponent
113     我們在開發中,常會用到 GridPanel,會定義分頁組件,按鈕等,經過這個實例,我們可以在把原有的 GridPanel再包一層,以保證軟件中的“單一原則”。
114     其中變化的部分我們可以通過定義新屬性把他外露出來。如上例所示。
115 -->
116 </body>
117 </html>

2.效果如下:

無廢話extjs教程

轉載請注明出處:http://www.cnblogs.com/iamlilinfeng


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM