這份教程目的在于對(duì)TabPanel類進(jìn)行一次快速介紹。所提及的知識(shí)都是來(lái)自我對(duì)TabPanel范例、Ext源碼和API文檔的學(xué)習(xí)。到本文最后,你應(yīng)該完成好一個(gè)Tab Panel,這個(gè)TabPanel能夠:
我們將會(huì)用下列HTML,和Ext一齊構(gòu)建一個(gè)基本的結(jié)構(gòu)。復(fù)制這些內(nèi)容到一個(gè)叫tptut.heml的文件,并要求是運(yùn)行在服務(wù)端的,當(dāng)然 也要保證ext-all.css, ext-base.js, 和 ext-all.js這些Ext安裝路徑的正確。然后按照以下步驟創(chuàng)建tab_actions.js:
<html>
<head>
<title>TabPanel教程</title>
<!-- Ext CSS and Libs -->
<link rel="stylesheet" type="text/css" href="../include/ext2/resources/css/ext-all.css" />
<script type="text/javascript" src="../include/ext2/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../include/ext2/ext-all.js"></script>
<!-- Custom CSS and Libs -->
<script type="text/javascript" src="./tab_actions.js"></script>
<style>
#actions li {
margin:.3em;
}
#actions li a {
color:#666688;
text-decoration:none;
} </style>
</head>
<body>
<ul id="actions" class="x-hidden">
<li>
<a id="use" href="#">Use Existing Tab</a>
</li>
<li>
<a id="create" href="#">Create New Tab</a>
</li>
</ul>
<div id="tabs"></div>
</body>
</html>
以上代碼有兩個(gè)地方的元素需要注意。我們將使用"actions"(動(dòng)作列表)這種簡(jiǎn)易的實(shí)現(xiàn)來(lái)執(zhí)行tab的創(chuàng)建。"tabs"的那個(gè)div將用于Tab面板中第一個(gè)默認(rèn)tab的容器。
在剛才那個(gè)目錄中創(chuàng)建一個(gè)文文件。就叫做作tab_actions.js,加入下面JavaScript:
Ext.onReady(function(){
// 包含actions的菜單
var tabActions = new Ext.Panel({
frame:true,
title: 'Actions',
collapsible:true,
contentEl:'actions',
titleCollapse: true
});
// 保持actions菜單的父面板
var actionPanel = new Ext.Panel({
id:'action-panel',
region:'west',
split:true,
collapsible: true,
collapseMode: 'mini',
width:200,
minWidth: 150,
border: false,
baseCls:'x-plain',
items: [tabActions]
});
// 主面板(已有tab)
var tabPanel = new Ext.TabPanel({
region:'center',
deferredRender:false,
autoScroll: true,
margins:'0 4 4 0',
activeTab:0,
items:[{
id:'tab1',
contentEl:'tabs',
title: 'Main',
closable:false,
autoScroll:true
}]
});
// 配置視圖viewport
viewport = new Ext.Viewport({
layout:'border',
items:[actionPanel,tabPanel]});
});
上面的代碼被套上一個(gè)Ext.onReady的函數(shù),以防止頁(yè)面元素未全部加載就執(zhí)行代碼了。接著要做的事情是將我們的動(dòng)作列表(Action list)轉(zhuǎn)換到名字為tabActions的那個(gè)面板,該命名是由contentEl (content element)(內(nèi)容元素)這個(gè)配置項(xiàng)參數(shù)所指定的。
接著,創(chuàng)建一個(gè)父面板actionPanel來(lái)保持菜單面板。我們已tabActions 作為一個(gè)item項(xiàng)的參數(shù)。由于actionPanel會(huì)由視圖Viewport的LayoutManager來(lái)頁(yè)面定位,所以我們須在配置項(xiàng)對(duì)象中指定一個(gè)區(qū)域。
第三個(gè)步驟是創(chuàng)建TabPanel(Tab面板)本身。我們想在頁(yè)面居中,即是對(duì)應(yīng)于視圖的中部。還要將一系列的tab配置項(xiàng)對(duì)象參數(shù)傳入到面板中。在這里例子中,參與內(nèi)置渲染的只有一個(gè)tab,但是多個(gè)也是可以的。如能確定每個(gè)面板在頁(yè)面上能夠被當(dāng)作容器使用,便可以成為該數(shù)組的元素。像當(dāng)前的情況,我們是把tabs作為第一個(gè)面板的內(nèi)容元素。 要注意,我們這指出了tab的Id。這就是我們稍后獲取的tab的依據(jù)。
最后,我們?cè)O(shè)置視圖, 用于瀏覽器可視區(qū)域的控制。 所需要做的就是指定一個(gè)布局(layout)和什么要顯示的組件。組件已經(jīng)由視圖的LayoutMangager(視圖管理器)配置好適合放置的區(qū)域。
這時(shí),你應(yīng)該在瀏覽器觀察到,包含Acitons菜單的兩個(gè)格式化列在左邊,tab面板占據(jù)了屏幕的其余位置。
新聞熱點(diǎn)
疑難解答
圖片精選