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

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

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

    小菜毛毛技術(shù)分享

    與大家共同成長(zhǎng)

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks
    有關(guān)重大改變的幾個(gè)要點(diǎn)

    文章內(nèi)容是對(duì)2.0新變化的綜合簡(jiǎn)述。請(qǐng)留意Ext框架在從1.x跨越到2.0的過(guò)程中,經(jīng)歷了無(wú)數(shù)的細(xì)微改進(jìn)、臭蟲修正和其他的改動(dòng)。 要逐一列出尚難為之,所以本文著重提及架構(gòu)上有轉(zhuǎn)換的地方,和一些全新加入的功能。本文下列的各部分將完整地解釋這每一項(xiàng)的細(xì)節(jié)。

    • 組件模型 Component Model
      在1.x中就有Component和BoxComponent兩個(gè)類了,但卻沒有深入整合到框架中去。到2.0,這兩個(gè)類得到極大的改進(jìn)并是一切主要組件的基礎(chǔ)。 盡管這些類對(duì)于開發(fā)者而言一般是盡量隱藏細(xì)節(jié),不過(guò)理解好組件生存周期這方面的基礎(chǔ)知識(shí)有利于進(jìn)一步的Ext學(xué)習(xí)。參閱詳細(xì)。
    • 容器模型 Container Model
      有幾個(gè)核心類可用于生成器件(widgets)和包含其它組件的布局。 容器Container為對(duì)象的容納和組件的布局提供一個(gè)基礎(chǔ)性的構(gòu)成方式,對(duì)于整個(gè)Ext框架可視化必不可少。 面板Panel 從容器類繼承,為用戶程序提供特定功能的UI基類,屬于容器結(jié)構(gòu)層次中最常用的類。 窗口Window是面板的一種特殊類型,使得web應(yīng)用程序如桌面式(desktop-style)那樣。視見區(qū)Viewport是專為全屏幕web程序應(yīng)用而設(shè)計(jì)的實(shí)用容器 。參閱詳細(xì)
    • 布局Layouts
      1.x中的布局方式集中圍繞在BorderLayout和其相關(guān)的幾個(gè)類。2.0中,布局的整體架構(gòu)建立在嶄新的容器類、布局類上。 BorderLayout現(xiàn)加入到九種風(fēng)格布局之中。布局類已經(jīng)是全部重寫設(shè)計(jì)并考慮最大的可擴(kuò)展性。 布局的管理亦受益于2.0的框架,去掉一些開發(fā)者之前需要面對(duì)的復(fù)雜實(shí)現(xiàn)。參閱詳細(xì)
    • Grid
      Grid組件往往都被認(rèn)為是Ext的核心組件之一,在2.0的版本中同時(shí)繼續(xù)演進(jìn)。新版的用戶界面更友好,性能更佳,功能上新加了行摘要、行歸組、和一些基于插件實(shí)現(xiàn)如expandable rows和row numbering 等等的更多功能。參閱詳細(xì)
    • 模板 XTemplate
      1.x的模版類處理一些簡(jiǎn)單的模版時(shí)令人滿意,但對(duì)于復(fù)雜的輸出任務(wù)就缺乏健壯的支持。 在2.0中,全新的XTemplate可支持子模版,數(shù)組處理,直接代碼執(zhí)行,邏輯判斷和更多有用的功能。參閱詳細(xì)
    • 數(shù)據(jù)視圖 DataView
      1.x的模版將數(shù)據(jù)綁定到模版以生成制定的UI視圖。JsonView是快速綁定JSON數(shù)據(jù)輔助類。2.0的DataView把以上兩種方式作統(tǒng)一的處理,不同之處是它繼承自BoxComponent,可更好地支持各種布局方式,新的XTemplate類為模版處理提供強(qiáng)大的支持。參閱詳細(xì)
    • 其它新組件
      這些新組件包括動(dòng)作(Action)、CycleButton、 Hidden (field)、 ProgressBar和TimeField。參閱詳細(xì)

    補(bǔ)充說(shuō)明

    • 主題
      2.0支持開箱即用的主題(Theme),使用更為簡(jiǎn)化。Ext 1.x支持四套主題,但2.0減少到兩套("Ext Blue" 和Gray)。 如打算自定義Ext的主題,那么Gray主題就是一份不錯(cuò)的藍(lán)本,另外一些2.0 社區(qū)主題也可以提供一些思路或直接使用。 這不是API改動(dòng)的一部分,但是有需要在這里提及一下。
    • 突破性進(jìn)展
      令人遺憾,2.0的一些改動(dòng)無(wú)法做到向后兼容。因?yàn)闊o(wú)論相關(guān)的組件還是渲染模型已經(jīng)是從底層上大幅修改,許多現(xiàn)有的組件必須舍棄舊1.x的方式重寫編寫,與1.x的差別較大。 我們提供的1.x到2.0升級(jí)指南希望能協(xié)助解決現(xiàn)有Ext 1.x程序的升級(jí)問題。

    組件模型 Component Model

    組件概述

    2.0的一個(gè)目標(biāo)就是希望能以簡(jiǎn)單的代碼塊構(gòu)建程序,甚至比以往更簡(jiǎn)單。 組件Component類最初在1.x引入,卻沒有全面整合到框架中去。在2.0中,組件所賦予的能力有長(zhǎng)足的改進(jìn)和提升,使得其成為整個(gè)架構(gòu)里最為基礎(chǔ)的一個(gè)類。組件對(duì)象為組件的創(chuàng)建、渲染、事件處理、狀態(tài)管理和銷毀提供了統(tǒng)一的模型,Ext下面的每一個(gè)組件具備了這些由組件對(duì)象擴(kuò)展出來(lái)的特性。這是2.0組件對(duì)象的關(guān)鍵特性:

    • 顯式聲明構(gòu)建器鏈和重寫 Explicit constructor chaining and overriding
      組件會(huì)將一個(gè)基礎(chǔ)構(gòu)造器連同配置傳入到子類中。函數(shù)initComponent用于提供制定的構(gòu)造器邏輯,只要在繼承鏈上的某一個(gè)子類實(shí)現(xiàn)便可,所有的組件都遵從此方式。此時(shí)的子類就可在initComponent中對(duì)其設(shè)置相關(guān)的屬性,實(shí)現(xiàn)具體的功能。
    • 可調(diào)控的渲染 Managed rendering
      2.0中,每個(gè)組件都支持延時(shí)渲染(lazy rendering),又稱按需渲染(on-demand rendering)。渲染的調(diào)控一般是為你自動(dòng)設(shè)置完好的。即使如此,你亦可以通過(guò)的beforerenderrender事件控制渲染發(fā)生、結(jié)束,達(dá)到最為靈活的自定義調(diào)控。
    • 可調(diào)控的銷毀 Managed destruction
      每一個(gè)組件具有destroy的函數(shù),當(dāng)組件不再需要時(shí),Ext就負(fù)責(zé)組件的結(jié)束調(diào)控,如自動(dòng)垃圾回收和摧毀組件元素。當(dāng)然,銷毀亦提供相應(yīng)的事件,如beforedestroydestroy可按照實(shí)際的情況作出邏輯處理。
    • 狀態(tài)管理自動(dòng)化 Automatic state management
      組件內(nèi)建設(shè)置和獲取狀態(tài)(State)的功能,只要讓全局對(duì)象StateManager和一個(gè)狀態(tài) Provider都初始化好,那么多數(shù)的組件都具有自動(dòng)狀態(tài)管理的能力。
    • 組件常規(guī)行為的統(tǒng)一接口 Consistent interface for basic component behavior
      一般常規(guī)的行為如隱藏、顯示和激活、禁用均是組件的基本特性。如需要,這些都可由子類去重寫或制定。
    • 由組件管理器負(fù)責(zé)的可用調(diào)配 Availability via ComponentMgr
      Ext的每一個(gè)組件在創(chuàng)建的時(shí)候就會(huì)由組件管理器登記注冊(cè),即你可隨時(shí)獲取任何組件,只需調(diào)用Ext.getCmp('id')。
    • 支持插件 Plugin support
      現(xiàn)在任何的組件可以通過(guò)插件的形式來(lái)擴(kuò)展了。插件實(shí)質(zhì)是帶有init方法的一種類。該方法會(huì)有一個(gè)單獨(dú)的參數(shù)(類型為Ext.Component)傳入到其中。插件可通過(guò)組件的plugins配置項(xiàng)指定。當(dāng)組件創(chuàng)建時(shí),如果有插件可用,組件就會(huì)調(diào)用每個(gè)插件上的init方法,將自身的引用作為參數(shù)傳入。 每個(gè)插件運(yùn)行之后可調(diào)用組件的方法或響應(yīng)組件的事件以實(shí)現(xiàn)自身的功能。

    組件的生存周期Component Life Cycle

    一般來(lái)說(shuō),組件的對(duì)象架構(gòu)滿足了“能運(yùn)行(Just Works)”這一基本要求。架構(gòu)在設(shè)計(jì)上已是調(diào)控好了大多數(shù)組件是怎樣處理的,而且對(duì)最終開發(fā)者是透明的。 不過(guò),若對(duì)組件對(duì)象擴(kuò)展,或是有些需要制定的地方,就要利用一定的時(shí)間去實(shí)現(xiàn)。 深入理解組件對(duì)象的生存周期會(huì)是非常好的幫助。下面的內(nèi)容就是對(duì)基于組件的每個(gè)類,一個(gè)周期內(nèi)各個(gè)重要階段作出解釋:

    初始化Initialization
    1. 配置項(xiàng)對(duì)象生效了
      The config object is applied.
      組件對(duì)象的構(gòu)造器會(huì)把全部的配置項(xiàng)傳入到其子類中去,并且進(jìn)行下列所有的步驟。
    2. 組件的底層事件創(chuàng)建了
      The base Component events are created

      這些事件由組件對(duì)象負(fù)責(zé)觸發(fā)。事件有enable, disable, beforeshow, show, beforehide, hide, beforerender, render, beforedestroy, destroy (參閱Component API文檔完整的內(nèi)容)。
    3. 組件在組件管理器里登記了
      The component is registered in ComponentMgr

      initComponent這方法總是使用在子類中,就其本身而論,該方法是一個(gè)模板方法(template method),用于每個(gè)子類去現(xiàn)實(shí)任何所需的構(gòu)造器邏輯(any needed constructor logic)。首先會(huì)創(chuàng)建類,然后組件對(duì)象各層次里面的每個(gè)類都應(yīng)該調(diào)用superclass.initComponent。通過(guò)該方法,就可方便地實(shí)現(xiàn)(implement),或重寫(Override)任意一層構(gòu)造器的邏輯。
    4. 狀態(tài)感知進(jìn)行初始化(如果有的話)
      State is initialized (if applicable)

      如果組件是狀態(tài)感知的,其狀態(tài)會(huì)進(jìn)行刷新。
    5. 加載好插件(如果有的話)
      Plugins are loaded (if applicable)

      如果該組件有指定任何插件,這時(shí)便會(huì)初始化。
    6. 渲染好插件(如果必須的話)
      The component is rendered (if applicable)

      如果指定了組件的renderToapplyTo配置屬性,那么渲染工作就會(huì)立即開始,否則意味著延時(shí)渲染,即等待到顯式控制顯示,或是其容器告知其顯示的命令。
    渲染過(guò)程 Rendering
    1. 觸發(fā)beforerender事件 The beforerender event is fired
      這是個(gè)可取消的事件,指定的句柄(handler)可阻止組件進(jìn)行渲染
    2. 設(shè)置好容器 The container is set
      如果沒有指定一個(gè)容器,那么將使用位于DOM元素中組件的父節(jié)點(diǎn)作為容器。
    3. 調(diào)用onRender方法 The onRender method is called
      這是子類渲染最重要的一個(gè)步驟,由于該方法是一個(gè)模板方法(template method),用于每個(gè)子類去現(xiàn)實(shí)任何所需的渲染邏輯(any needed render logic)。首先會(huì)創(chuàng)建類,然后組件對(duì)象各層次里面的每個(gè)類都應(yīng)調(diào)用superclass.onRender。通過(guò)該方法,就可方便地實(shí)現(xiàn)(implement),或重寫(Override)任意一層渲染的邏輯。
    4. 組件是“隱藏”狀態(tài)的 The Component is "unhidden"
      默認(rèn)下,許多組件是由CSS樣式類如"x-hidden"設(shè)置隱藏的。如果 autoShow所配置的值為true,這時(shí)就不會(huì)有這個(gè)"hide"樣式類作用在該組件上
    5. 自定義的類、樣式生效了 Custom class and/or style applied
      一切組件的子類都支持clsstyle 兩種特殊的配置屬性,分別用于指定用戶自定義的CSS樣式類和CSS規(guī)則。 推薦指定cls的方法來(lái)制定組件及其各部分的可視化設(shè)置。由于該樣式類會(huì)套用在組件markup最外的一層元素,所以標(biāo)準(zhǔn)CSS規(guī)則會(huì)繼承到組件下任何子元素的身上。
    6. 觸發(fā)render事件 The render event is fired
      這是組件通知成功渲染的一個(gè)步驟。這時(shí),你可肯定地認(rèn)為組件的DOM元素是可用的了。如果嘗試在渲染之前訪問組件,會(huì)拋出一個(gè)不可用的異常。
    7. 調(diào)用了afterRender方法 The afterRender method is called
      這是另外一個(gè)實(shí)現(xiàn)或重寫特定所需的“后渲染”邏輯的模板方法。每個(gè)子類應(yīng)調(diào)用superclass.afterRender.
    8. 組件被隱藏或禁用(如果有的話) The Component is hidden and/or disabled (if applicable)
      配置項(xiàng)hidden和disabled到這步生效
    9. 所有狀態(tài)感知的事件初始化(如果有的話) Any state-specific events are initialized (if applicable)
      狀態(tài)感知的組件可由事件聲明特殊加載和保存狀態(tài)。如支持,加入此類的事件。
    銷毀過(guò)程 Destruction
    1. 觸發(fā)beforedesroy事件 The beforedestroy event is fired
      這是個(gè)可取消的事件,指定的句柄(handler)可阻止組件被銷毀。
    2. 調(diào)用了beforeDestroy方法 The beforeDestroy method is called
      這是另外一個(gè)實(shí)現(xiàn)或重寫預(yù)定銷毀邏輯的模板方法。每個(gè)子類應(yīng)調(diào)用superclass.beforeDestroy。
    3. 元素及其偵聽器被移除 Element and its listeners are removed
      若組件是渲染好的,所屬的元素的事件偵聽器和DOM樹中的元素都會(huì)被移除。
    4. 調(diào)用了onDestroy方法 The onDestroy method is called
      這是另外一個(gè)實(shí)現(xiàn)或重寫特定所需的“后銷毀”邏輯的模板方法。每個(gè)子類應(yīng)調(diào)用superclass.onDestroy。注意 容器類(Container class,和一切容器的子類)提供了一個(gè)默認(rèn)的onDestroy實(shí)現(xiàn),自動(dòng)遍歷其items集合里的每一項(xiàng),分別地執(zhí)行子組件身上的destroy方法。
    5. 在組件管理器中撤銷組件對(duì)象的登記 Component is unregistered from ComponentMgr
      使得不能再?gòu)腅xt.getCmp獲取組件對(duì)象
    6. 觸發(fā)destroy事件 The destroy event is fired
      這是組件成功銷毀的一個(gè)簡(jiǎn)單通知。此時(shí)組件已經(jīng)DOM中已是不存在的了
    7. 組件上的事件偵聽器被移除 Event listeners on the Component are removed
      組件本身可允許從所屬的元素得到事件偵聽器。如有的話,連同刪除。

    組件的X類型 XTypes

    XTypes是Ext 2.0中新的概念,被認(rèn)為是Ext組件的特定類型。可用的xtype摘要可在 Component類API開始的地方找到。與一般JavaScript對(duì)象用法相似,XTypes可用于查找或比較組件對(duì)象,如isXTypegetXType等的方法。其中getXTypes的方法可列出任意組件的xtpye層次表。

    然而,Xtypes最大的用途是怎么用于優(yōu)化組件的創(chuàng)建和渲染過(guò)程。 通過(guò)指定一個(gè)xtype的配置對(duì)象的寫法,可隱式聲明的方式創(chuàng)建組件,使得當(dāng)不需要立即渲染的情況就只是一個(gè)對(duì)象,省去不必要的實(shí)例化步驟。這時(shí)不僅渲染的動(dòng)作是延時(shí)的,而且創(chuàng)建實(shí)際對(duì)象的這一步也是延時(shí)的,從而節(jié)省了內(nèi)存和資源。 在復(fù)雜的布局中,這種性能上的改進(jìn)尤為明顯。

    //顯式創(chuàng)建所容納的組件
    var panel = new Ext.Panel({
    ...
    items: [
    new Ext.Button({
    text: 'OK'
    })
    ]
    };
     
    //使用xtype創(chuàng)建
    var panel = new Ext.Panel({
    ...
    items: [{
    xtype: 'button',
    text: 'OK'
    }]
    };

    第一個(gè)例子中,面板初始化的同時(shí),按鈕總是會(huì)立即被創(chuàng)建的。如果加入較多的組件,這種方法很可能減慢的渲染速度。第二例子中,按鈕直到面板真正在瀏覽器上需要顯示才會(huì)被創(chuàng)建和渲染。

    如果面板從未顯示(例如有個(gè)tab一直是隱藏的),那么按鈕就不會(huì)被創(chuàng)建,不會(huì)消耗任何資源了。

    BoxComponent

    BoxComponent 是另外一個(gè)重要的基類,該類從組件Component擴(kuò)展,為任何要進(jìn)行可視渲染和參與布局的組件提供了一致的、跨瀏覽器的箱子模型(Box Model)實(shí)現(xiàn)。BoxComponent負(fù)責(zé)調(diào)節(jié)大小和定位,自動(dòng)處理各瀏覽器之間的差異,如外/內(nèi)補(bǔ)丁、邊框的問題,形成一個(gè)統(tǒng)一的箱子模型,以支持各種瀏覽器。2.0的一切容器類(container)繼承自BoxComponent。

    容器模型Container Model

    Ext 2.0 Component/Container Class Hierarchy
    Ext 2.0 Component/Container Class Hierarchy

    容器 Container

    一個(gè)組件如果有包含其它的組件,那么,容器Container便是這個(gè)組件奠基之石。該類提供了布局方面和調(diào)節(jié)大小、嵌套組所需的邏輯,并且提供一個(gè)基礎(chǔ)性的加入組件協(xié)調(diào)機(jī)制。容器類不應(yīng)該直接使用,其目的在于為一切可視的容器組件提供一個(gè)基類。

    面板 Panel

    面板Panel是2.0最常用的容器,90%布局任務(wù)都離不開面板。布局里的排版元素便是面板,面板如同一張白紙,完全是空白的矩形,沒有可視內(nèi)容。雖然這樣,面板也提供了一些預(yù)留區(qū)域, 方便加入程序所需的UI界面,包括頂部或底部的工具條、菜單欄、頭部區(qū)域、底部區(qū)域和軀干區(qū)域。同時(shí)內(nèi)建可展開和可收縮行為的按鈕,和其它不同任務(wù)預(yù)設(shè)的按鈕。面板可輕松地下降到任意的容器或布局,當(dāng)中定位或渲染的邏輯全部由Ext調(diào)控,

    下列是Ext 2.0面板最主要的幾個(gè)子類:

    Window

    Window 是一種可浮動(dòng)的、可最小/最大化的、可復(fù)原的、可拖動(dòng)的..等此類的特殊面板。其目的在于實(shí)現(xiàn)一種具有桌面風(fēng)格的程序界面的基類,像Ext桌面演示看到的那樣。

    視見區(qū)Viewport

    視見區(qū)Viewport是以document.body作容器的實(shí)用類,它會(huì)與瀏覽器視圖自適應(yīng)尺寸,是全屏幕應(yīng)用的基礎(chǔ),如瀏覽器大小調(diào)節(jié)、布局重新計(jì)算的問題由該類自動(dòng)完成。 注意視見區(qū)Viewport除了document.body元素外不能渲染在其它的容器上,所以一個(gè)頁(yè)面只能有一個(gè)視見區(qū)。

    布局 Layouts

    Ext 2.0 Layout Class Hierarchy
    Ext 2.0 Layout Class Hierarchy

    引言

    2.0中最具意義的改進(jìn)之一。在創(chuàng)建優(yōu)雅的程序布局時(shí)感受到易用性或靈活性方面帶來(lái)的好處。在Ext 1.x,布局的開發(fā)集中圍繞在BorderLayout、Region和ContentPanel幾個(gè)類。 1.x BorderLayout已經(jīng)可以方便地生成UI,但要真正創(chuàng)建屬于自己的布局,還是沒有足夠的支持。 創(chuàng)建復(fù)雜的布局通常需要手工編寫一些代碼應(yīng)付滾動(dòng)條、嵌套和某些怪癖的問題。

    Ext 2.0帶來(lái)了一個(gè)重寫編寫的、企業(yè)級(jí)應(yīng)用的布局管理系統(tǒng)。 共有10種風(fēng)格的布局管理器,分別提供構(gòu)建各種可能的程序布局基礎(chǔ)。Ext調(diào)控了布局諸如size、定位、滾動(dòng)條和其他的屬性方面的問題,一如既往地簡(jiǎn)單,開箱即用。在容器也可無(wú)限嵌套布局、混合其他不同風(fēng)格的布局。

    布局由容器內(nèi)置創(chuàng)建,所以布局不應(yīng)通過(guò)關(guān)鍵字new實(shí)例化這種方式直接使用。 有一種內(nèi)部的機(jī)制,容器與布局能夠很好地協(xié)調(diào)工作—只需配置好相關(guān)的參數(shù),容器就會(huì)委托其負(fù)責(zé)的布局類工作。創(chuàng)建容器的時(shí)候,你應(yīng)選定一種布局的風(fēng)格以及相關(guān)的配置,這兩個(gè)配置是屬性layout和屬性layoutConfig。 舉例:

    var panel = new Panel({
    title: 'My Accordion',
    layout: 'accordion',  //在這個(gè)面板中所使用的布局樣式
    layoutConfig: {
    animate: true     //布局指定的配置項(xiàng)寫在這里
    }
    // 其他Panel的選項(xiàng)
    });

    當(dāng)你創(chuàng)建嵌套布局時(shí),明白面板包含其他面板是很重要的,布局中的每個(gè)面板必須指定一個(gè)布局管理器。 多數(shù)情況你不需要指定布局的風(fēng)格如“border”或“accordion”,較常見的是“fit”那一種,會(huì)自動(dòng)調(diào)整大小自適應(yīng)它的容器。 如果你不指定某個(gè)布局管理器,默認(rèn)的是ContainerLayout類,不過(guò)這樣很可能導(dǎo)致一些意料不到的情況發(fā)生,所以最好精確聲明一下。


    每種布局類都支持其特定的配置選項(xiàng)。關(guān)于布局每種配置選項(xiàng)可參考API文檔。

    布局管理器 Layout Managers

    Image:Layout-container.gif
    ContainerLayout

    其它一切布局管理器的基類,容器若不指定某個(gè)布局管理器,則默認(rèn)的管理器就是這個(gè)ContainerLayout。ContainerLayout沒有任何的外觀表示— 其主要的職責(zé)是容納子項(xiàng)目、控制渲染和一些常見任務(wù),如調(diào)節(jié)大小緩沖(resize buffering)。 ContainerLayout常用于擴(kuò)展制定的布局,很少實(shí)例化直接使用。詳細(xì)在API 參考.

    Image:Layout-card.gif
    CardLayout

    CardLayout將容器中的每個(gè)組件當(dāng)作一個(gè)卡片來(lái)處理。在某一時(shí)間,只有一個(gè)卡片是可見的,容器象一個(gè)卡片堆棧一樣工作。大多數(shù)的情況,用于向?qū)В╓izards),制定的tab實(shí)現(xiàn)或其它多頁(yè)面信息的場(chǎng)合。參閱API 參考。

    Image:Layout-absolute.gif
    AbsoluteLayout

    這是一個(gè)非常簡(jiǎn)單的布局,通過(guò)X/Y坐標(biāo)精確來(lái)定位包含各項(xiàng)的相關(guān)容器。參閱API 參考.

    Image:Layout-column.gif
    ColumnLayout

    適用于多個(gè)列并排結(jié)構(gòu)的布局風(fēng)格,每個(gè)列的寬度須由像素值或百分比指定,但高度自適應(yīng)于內(nèi)容的高度。詳細(xì)在API參考.

    Image:Layout-accordion.gif
    AccordionLayout

    AccordionLayout包含了一組像卡片垂直方向堆棧的面板,同通過(guò)展開或收縮來(lái)顯示內(nèi)容。在某一時(shí)間,只有一個(gè)卡片是可見的。詳細(xì)在API參考。

    Image:Layout-fit.gif
    FitLayout

    這是一個(gè)簡(jiǎn)單的布局,主要是創(chuàng)建一個(gè)適應(yīng)容器大小的布局區(qū)域。如沒有特定的布局要求這是容器最好的默認(rèn)布局。詳細(xì)在API參考.

    Image:Layout-anchor.gif
    AnchorLayout

    這是為一些固定元素相對(duì)于容器四條邊的布局。元素可通過(guò)與邊緣的百分比或便宜一個(gè)值來(lái)定位,并支持相當(dāng)于物理容器有不同尺寸的“虛擬層畫布(virtual layout canvas)”。 詳細(xì)在API文檔。

    Image:Layout-form.gif
    FormLayout

    FormLayout是為創(chuàng)建一張要提交數(shù)據(jù)條目的表單而設(shè)計(jì)的布局風(fēng)格。注意,一般來(lái)講,和FormPanel相似,此布局類都有表單提交的自動(dòng)處理,但你會(huì)更傾向使用前者。 FormPanels必須指定layout:'form'(只能一定是這樣),所以表單額外需要一個(gè)布局將其嵌套。 參閱API文檔。

    Image:Layout-border.gif
    BorderLayout

    與1.x的BorderLayout的布局完全一致。布局區(qū)域支持嵌套, 滑動(dòng)條面板和可關(guān)閉、微調(diào)的分隔區(qū)域。對(duì)于一些典型業(yè)務(wù)程序的UI尤為適用。詳細(xì)API文檔。

    Image:Layout-table.gif
    TableLayout

    主要目的是通過(guò)一個(gè)表格的形式劃分區(qū)域。實(shí)際上也是生成一個(gè)table的HTML makeup 詳細(xì)在API參考。

    Grid

    概述

    2.0中的GridView有極大的改進(jìn),而Grid的UI部分,正是由GridView這個(gè)類來(lái)實(shí)現(xiàn)的。2.0中GridView最主要的新功能有:

    • 效能的提升
      GridView的底層結(jié)構(gòu)和渲染代碼已在2.0完整重構(gòu)過(guò),并側(cè)重考慮了效能部分。正因性能的原因,鎖定列的這一功能已經(jīng)取消(參閱下一節(jié))。
    • 感觀(look and feel)的改進(jìn)
      和新2.0的主題一起, Grid的外觀控制也有新變化,使得Grid比以前更時(shí)尚和看上去更具吸引力。
    • 單行歸組
      多個(gè)行可被歸組到某一指定列,由用戶重新歸組亦可。
    • 多行組摘要
      每一組可相應(yīng)的提供一個(gè)數(shù)據(jù)摘要組
    • 進(jìn)階插件支持
      在2.0中,新加入插件機(jī)制。GridView就是這種插件機(jī)制的一個(gè)典型例子。如范例中所示,Grid優(yōu)秀的功能便是依靠幾個(gè)預(yù)先做好的插件。插件RowExpander提供了展開、收縮行的功能,插件RowNumberer就提供了行中數(shù)字的支持。

    列鎖定的注意事項(xiàng)(Column Locking)

    有些用戶或許發(fā)現(xiàn)Ext 1.x中列鎖定的功能,到2.0因?yàn)橐呀?jīng)取消,并可以說(shuō)以后也不再支持了。列鎖定(Column locking),雖然對(duì)某些用戶來(lái)說(shuō)有其的用途, 但與2.0 GridView的新功能有不兼容的地方(如歸組、摘要等),而且為了實(shí)現(xiàn)鎖定會(huì)使得Grid渲染性能開銷增大。 因此,1.x gridView這功能的向上升級(jí),或打補(bǔ)丁,均不會(huì)由官方支持。

    注意:當(dāng)前有為2.0而做的用戶擴(kuò)展在進(jìn)行中,以實(shí)現(xiàn)2.0的列鎖定,而且看上去寫得還蠻不錯(cuò)。更多有用資訊可論壇的帖子找到。

    XTemplate

    XTemplate使用了多種標(biāo)簽和特殊操作符支持模板,使得模板在應(yīng)付復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時(shí)尤為健壯。這里所列出的高度概括的幾項(xiàng)功能,欲了解完整的細(xì)節(jié)和使用方法,請(qǐng)參閱XTemplate API文檔.

    • 自動(dòng)數(shù)組填充和作用域切換
    • 可在子模板作用域內(nèi)訪問父級(jí)對(duì)象
    • 可訪問數(shù)組索引
    • 支持?jǐn)?shù)據(jù)值的簡(jiǎn)單匹配
    • 自動(dòng)渲染浮點(diǎn)型數(shù)組(不包含非對(duì)象的值)
    • 基礎(chǔ)性的條件邏輯符號(hào)if
    • 可執(zhí)行模板中直接寫好的任意語(yǔ)句
    • 支持模板的配置屬性
    • 可通過(guò)配置項(xiàng)對(duì)象自定義模板方法
    • 可用于服務(wù)端的JavaScript模板

    DataView

    從表面上看,DataView跟1.x的View類非常相似。兩者都支持模版數(shù)據(jù)渲染,Data store數(shù)據(jù)綁定和內(nèi)建的選區(qū)模型和事件。但是, 隨著2.0新架構(gòu)的設(shè)計(jì),DataView賦予了更強(qiáng)大的功能。 下面是這次最重要的改動(dòng):

    • 繼承自BoxComponent
      1.x View類繼承自O(shè)bservable, 作為獨(dú)立組件而言工作不錯(cuò), 但是它并沒提供內(nèi)建的機(jī)制與其他組件融合的能力。而DataView就是針對(duì)這種不足作出的改進(jìn),該類從BoxComponent繼承,因此如前文所述,也具備一般組件的生存周期控制。
    • 發(fā)揮了XTemplate之功效
      1.x View類采用了1.x本身的模版類Template 。較好滿足了view自身的需求,但是難以滿足一些復(fù)雜的渲染任務(wù)。DataView采用的模版類也升級(jí)到2.0的XTemplate,可輕松定制UI應(yīng)付復(fù)雜的數(shù)據(jù)。
    • 新增的配置選項(xiàng)
      DataView 提供了更為靈活的-幾個(gè)新選項(xiàng):
      • itemSelector: 必須是一個(gè)DomQuery選擇符告知該類究竟如何分辨出每個(gè)item。相比1.x的做法帶來(lái)更高的靈活性和更高的速度。
      • simpleSelect: 一種新的選區(qū)生成模式,使得用戶無(wú)須按下Shift或Ctrl鍵便可進(jìn)行多選。
      • overClass: 一個(gè)CSS的樣式類,每個(gè)元素onmouseover和onmouseout時(shí)生效。
      • loadingText:像其他綁定store的Ext組件一樣,DataView支持標(biāo)準(zhǔn)的遮罩效果。

    其它新組件

    一些有趣的新組件也加入到2.0中去了。要了解這些新組件到底有什么新功能,最好還是看看API文檔完整的介紹。

    動(dòng)作 Action

    動(dòng)作Action是一種從組件中抽象出來(lái)的可復(fù)用的“功能塊”,即多個(gè)組件之間的同一功能都來(lái)自這個(gè)ACTION的實(shí)現(xiàn)。動(dòng)作允許你共享句柄(handlers),配置選項(xiàng)和UI的更新,所有組件均支持動(dòng)作的接口(主要是Toolbar,Button和 Menu組件)。 詳細(xì)在API文檔。

    CycleButton

    這是一個(gè)包含復(fù)選元素菜單的特制的SplitButton。當(dāng)菜單子項(xiàng)每次被單擊,按鈕都會(huì)輪回一次狀態(tài),觸發(fā)change的事件(或調(diào)用按鈕的changeHandler函數(shù),如果有的話)以激活菜單項(xiàng)。 FeedViewer演示程序就包含了該例子— 預(yù)覽窗口地址的那個(gè)按鈕就是一個(gè)SplitButton。詳細(xì)在API文檔。

    Hidden (field)

    這個(gè)便是HTML表單中隱藏域的一個(gè)簡(jiǎn)單的實(shí)現(xiàn),能夠以EXT FORM組件般操控。詳細(xì)在API參考。

    進(jìn)度條 ProgressBar

    1.x中的進(jìn)度條是簡(jiǎn)單地內(nèi)建在MessageBox類中?,F(xiàn)在已重構(gòu)為單獨(dú)的器件并有進(jìn)一步的改進(jìn)。它支持兩種不同的模式(手動(dòng)和自動(dòng)進(jìn)度),而且LOOK and FEEL方面可輕松制定。詳細(xì)在API參考。

    TimeField

    這是下拉列表時(shí)間選取器的簡(jiǎn)單實(shí)現(xiàn)。詳細(xì)在API參考。

    Retrieved from "
    主站蜘蛛池模板: 亚洲日韩精品无码专区网址| 手机在线看永久av片免费| 免费**毛片在线播放直播 | 中文字幕无码毛片免费看| 亚洲同性男gay网站在线观看| 亚洲欧美熟妇综合久久久久| 中文字幕视频免费在线观看| 亚洲AV永久无码精品一区二区国产 | 老司机福利在线免费观看| 国产精品麻豆免费版| 亚洲AV无码不卡在线播放| 亚洲剧场午夜在线观看| 18勿入网站免费永久| 亚洲国产精品综合久久20| 免费观看一区二区三区| 最近的免费中文字幕视频| 亚洲人成色在线观看| 国产一级高清免费观看| 亚洲人成777在线播放| 在线成人a毛片免费播放| 亚洲国产成人片在线观看无码| 亚洲欧美日韩综合久久久久| 精品久久久久久久免费人妻| 阿v免费在线观看| a级亚洲片精品久久久久久久| 东方aⅴ免费观看久久av| 亚洲成a人片77777老司机| 亚洲精品在线免费观看| 亚洲欧美aⅴ在线资源| 亚洲精品国产精品乱码不卞| 亚洲精品成人图区| 天天摸夜夜摸成人免费视频| 美女无遮挡免费视频网站| 国产A在亚洲线播放| 91在线老王精品免费播放| 亚洲午夜未满十八勿入网站2| 95老司机免费福利| 亚洲国产欧洲综合997久久| 国产亚洲欧洲Aⅴ综合一区| 美景之屋4在线未删减免费| 国产AV无码专区亚洲AV毛网站|