日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Ext學(xué)習(xí)筆記06

 空城66 2014-12-08

Window

先來看一下API:

 

Window 繼承于 Panel,是Panel的子類,Window組件默認(rèn)是可以浮動和拖拽的,并且支持最大最小化的能力。Panel 中的各種屬性和方法在Window組件中是可以直接使用的。來看例子:

  1. <script type="text/javascript">  
  2.   
  3.     Ext.onReady(function(){  
  4.         var _window = new Ext.Window({  
  5.                 title: "登陸窗體",  
  6.                 frame:true,  
  7.                 height:150,  
  8.                 width:300,  
  9.                 layout:"form",  
  10.                 labelWidth:45,  
  11.                 /* 樣式控制 */  
  12.                 plain:true,  
  13.                 /* 控制窗口大小 */  
  14.                 resizable:false,  
  15.                 /* 自定義Window內(nèi)部 CSS 樣式 */  
  16.                 bodyStyle:"padding:15px",  
  17.                 /* button 定位 */  
  18.                 buttonAlign:"center",  
  19.                 /* 是否可關(guān)閉 */  
  20.                 closable:false,  
  21.                 listeners:{  
  22.                     "show":function(){alert("Hello World")},  
  23.                     "hide":function(){alert("Window is hide")},  
  24.                     "close":function(){alert("Window is closed")}  
  25.                 },  
  26.                 defaults:{xtype:"textfield", width:200},  
  27.                 items:[  
  28.                         {fieldLabel:"用戶名"},  
  29.                         {fieldLabel:"密 碼"}  
  30.                     ],  
  31.                 buttons:[  
  32.                         {text:"確定"},  
  33.                         {  
  34.                             text:"取消",  
  35.                             handler:function(){  
  36.                                     _window.hide();                           
  37.                                 }  
  38.                         }  
  39.                     ]  
  40.             });  
  41.               
  42.         /* 顯示W(wǎng)indow組件 */  
  43.         _window.show();  
  44.     });  
  45.   
  46. </script>  

 

效果:

 

彈出來一個很漂亮的窗口,而且在IE和FF下效果是一樣的,這一點EXT不同瀏覽器之間的兼容做的很好,減少了很多調(diào)試樣式的工作。

 

 

Window組件構(gòu)造參數(shù)(Config Options):

  • title: 窗體名稱,顯示在窗體的頭部,默認(rèn)為空
  • minimizable:是否顯示最小化按鈕,true,顯示最小化按鈕,默認(rèn)false
  • maximizable:是否顯示最大化按鈕,true,顯示最大化按鈕,默認(rèn)false

屬性:

  • plain:Boolean,True,顯示W(wǎng)indow內(nèi)容部分的背景和窗體背景一致,F(xiàn)alse,Window內(nèi)容部分的背景較亮于Window的背景,默認(rèn)為false。

 

  • bodyStyle:可以對Window組件內(nèi)容部分自定義CSS樣式
  • resizable:通過拖拽控制窗口大小
  • buttonAlign:調(diào)整添加到Panel中的Button的水平位置,可以取值“l(fā)eft”,“center”,“right”,默認(rèn)“right”
  • closable:默認(rèn)是“true”,顯示關(guān)閉按鈕
  • closeAction:關(guān)閉按鈕點擊時響應(yīng)的動作,默認(rèn)動作關(guān)閉會將窗體從DOM中移除并銷毀。這里一點需要說明一下,瀏覽器對DOM操作是非常消耗資源的,關(guān)閉窗體可以使用‘hide’ 參數(shù),它僅是簡單的將窗體隱藏,需要的時候還可以顯示出來,這樣的操作速度會更快更省資源
  • items:被添加到Container的一個item或者item數(shù)組,這里的Container是Window窗體,Container和item都是Ext的element,其他的Ext Container也都有items屬性,使用方法和這里是一樣的。

 

方法:

  • show:顯示窗口
  • hide:隱藏窗口

 

事件:

  • show:當(dāng)窗口顯示時觸發(fā)
  • hide:當(dāng)窗口隱藏時觸發(fā)

 

 

 上面僅列出來例子中用到的一些屬性方法事件,更多的需要查看Window組件的API,里面定義了非常多的屬性方法事件,用到什么再去查吧。

 

 

 

Window 內(nèi)部組件的取值

Ext為Container和內(nèi)部的items之間定義了一種索引機制,可以從items向上索引其所在的Container對象,也可以從Container向下索引其內(nèi)部的items,通過這種機制,就可以取得我們想要的值了。

 

 

 

  1. Ext.onReady(function(){  
  2.         var _window = new Ext.Window({  
  3.                     ......  
  4.                     buttons:[  
  5.                         {  
  6.                             text:"OK",  
  7.                             handler:function(){  
  8.                                 alert(this.text);  
  9.                                     alert(this.ownerCt.title);  
  10.                         }  
  11.         ......  
  12.     });  

 

 

先來看一下例子中的this的含義 

  • this:handler 中的 this 指向handler所在對象本身
  • ownerCt,(owner Container)當(dāng)前對象所在的對象(一個Ext的Container),默認(rèn)是undefined,當(dāng)當(dāng)前的對象被放到一個Container對象中,ownerCt會被自動賦值。

 結(jié)果第一次會彈出 Button 上的文字“OK”,第二次彈出“Get Value”,說明可以通過ownerCt向上索引到Window對象。

 

 

 

那么如何向下索引呢?

  1. var _window = new Ext.Window({  
  2.                     title:"Get Value",  
  3.                     width:250,  
  4.                     height:100,  
  5.                     layout:"form",  
  6.                     labelWidth:45,  
  7.                     plain:true,  
  8.                     bodyStyle:"padding:5px",  
  9.                     items:{xtype:"textfield", fieldLabel:"Name"},  
  10.                     buttons:[  
  11.                         {  
  12.                             text:"OK",  
  13.                             handler:function(){  
  14.                                 alert(this.ownerCt.items.first().getValue());  
  15.                             }  
  16.                         }  
  17.                     ]  
  18.                 });  

 

通過 this.ownerCt.items.first().getValue() 方法就能得到input框中的值,在input框中輸入meizhi



彈出“meizhi”

 

items:這里的items,不是構(gòu)造參數(shù)中的items,this.ownerCt.items,是一個對象加上“.”的用法,是當(dāng)前這個對象的屬性,看一下API中的定義:

items 是 MixedCollection 類型,是一個集合對象,MixedCollection中的幾個常用方法:

  • first():返回集合當(dāng)中的第一個元素
  • itemAt(index):指出index位置上的 item

窗體里有多個 TextField 的取值:

  1. Ext.onReady(function(){  
  2.     var _window = new Ext.Window({  
  3.                 title:"Get Value",  
  4.                 width:250,  
  5.                 height:150,  
  6.                 layout:"form",  
  7.                 labelWidth:45,  
  8.                 plain:true,  
  9.                 bodyStyle:"padding:5px",  
  10.                 items:[  
  11.                         {xtype:"textfield", fieldLabel:"Name"},  
  12.                         {xtype:"textfield", fieldLabel:"Address"}  
  13.                     ],  
  14.                 buttons:[  
  15.                     {  
  16.                         text:"OK",  
  17.                         handler:function(){  
  18.                               
  19.                             var _items = this.ownerCt.items;  
  20.                             var temp = "";  
  21.                               
  22.                             temp += "Name : " + _items.first().getValue();  
  23.                             temp += ", Address : " + _items.itemAt(1).getValue();  
  24.                               
  25.                             alert(temp);  
  26.   
  27.                         }  
  28.                     }  
  29.                 ]  
  30.             });  
  31.     _window.show();  
  32. });  

 

效果:

 

通過items就得到了 Container 中的 item 的值了,但是這種方法看起來不是很靈活,使用 MixedCollection 中的

item(String / Number)方法可以通過ID,Name直接索引到目標(biāo)對象,這就想我們使用 JavaScript 中的 Document.getElementById 方法一樣,想要那個 item, 直接取來就好了。

 

有一種更加常用的取 Ext 中對象的方法是  Ext.getCmp() ,這個方法可以直接通過 ID 來取到目標(biāo)對象。

 

但是實際應(yīng)用中的情況是比較復(fù)雜的,頁面中會存在很多的Ext Component,很多時候多個表單中會有相似甚至相同含義的對象,在為它們命名的時候非常容易命名相同,在這樣的場景中大量運用 getCmp() 方法,一不小心就會出現(xiàn)錯誤。

 

使用Cotainer的items()方法,可以在一定程度上避免上面所提到的情況發(fā)生,items()方法取的對象的范圍局限在當(dāng)前 Container對象的內(nèi)部,這樣出現(xiàn)重名Component對象的機會就非常小,也不容易出錯。這樣在調(diào)試的時候也非常方便,僅需要在當(dāng)前Container的部分就可以找到問題。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多