ExtJS 4.2 業務開發(一)首頁搭建

來源:互聯網
上載者:User

標籤:

本篇開始搭建一個ExtJS 4.2單頁面應用, 這裡先介紹首頁的搭建,內容包括:首頁結構說明、擴充功能等方面。

目錄

1. 首頁結構說明

2. 擴充功能

3. 線上示範地址

 

1. 首頁結構說明1.1 首頁布局

傳統的ExtJS 4.2應用,基本布局如下:

 

1.2 首頁布局分析

根據上面的首頁布局圖,可轉換具體試圖結構:

header:存放系統的名稱、logo、使用者資訊等內容。

menu:菜單地區,以Tree形態展現業務入口。

tab:業務地區,具體的業務都以tab頁的形式嵌入到此地區。

 

1.3 首頁布局代碼

從ExtJS 4開始,應用程式的進入點開始使用為 Ext.application。

此方法取代了之前的Ext.onReady(),並增加了一些新的功能:建立一個viewport組件、設定應用程式的名稱等等。

API:http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.app.Application

Ext.application({    name: ‘AKApp‘,    launch: function () {        // 設定Viewport        Ext.create(‘Ext.container.Viewport‘, {            name: ‘MainFrame‘,            layout: ‘border‘,            items: [                Ext.create(‘Ext.panel.Panel‘, { // header                    width: ‘100%‘,                    height: 50,                    bodyBorder: false,                    border: false,                    region: ‘north‘,                    style: {                        background: ‘#739b2e‘                    },                    html: ‘<div id="header_content">ExtJSDemo</div>‘                }),                Ext.create(‘Ext.tree.Panel‘, { // menu                    title: ‘目錄‘,                    id: ‘app_tree‘,                    rootVisible: false,                    lines: false,                    split: true,                    width: ‘20%‘,                    region: ‘west‘,                    root: {                        expanded: true,                        children: [                            {                                text: ‘業務‘,                                expanded: true,                                children: []                            },                            {                                text: ‘Demo‘,                                expanded: true,                                children: [                                    { text: ‘建立組件‘, id: ‘Demo.CreateCompareP‘, leaf: true },                                    { text: ‘尋找組件‘, id: ‘Demo.QueryCompareP‘, leaf: true },                                ]                            }                        ]                    },                    listeners: {                        select: function (thisView, thisControl) {                            if (thisControl.data.leaf) {                  // TODO:點擊菜單,建立相關的Tab頁                            }                        }                    }                }),                Ext.create(‘Ext.tab.Panel‘, { // tab                    id: ‘app_tabContainer‘,                    region: ‘center‘,                    autoScroll: true,                    defaults: {                        autoScroll: true,                        bodyPadding: 4,                        closable: true  //tab頁的關閉按鈕                    }                }),            ]        });    }});

  

2. 擴充功能

這裡說明首頁常見的2種功能:

第1種:點擊菜單,動態載入業務檔案。

第2種:業務tab頁的切換,修改頁面URL的值。

2.1 點擊菜單,動態載入業務檔案

說明:各業務的入口都是在ExtJS tree組件的葉子節點上,系統初次載入時只展示了首頁功能,並沒有載入任何的業務代碼。現在要求點擊菜單的節點,展示業務頁面。

步驟:點擊菜單 → 載入業務檔案 → 在tab容器內展現此業務

代碼:在tree容器添加select事件

Ext.create(‘Ext.tree.Panel‘, {    title: ‘目錄‘,    root: {       expanded: true,       children: [           {               text: ‘業務‘,               expanded: true,               children: [                   { text: ‘船舶管理‘, id: ‘ShipMgr.ShipMgrP‘, leaf: true },               ]           }       ]    ,    listeners: {        select: function (thisView, thisControl) {            if (thisControl.data.leaf) {                var tabId = thisControl.data.id;                // 1.設定tab頁的預設參數                var tabConfig = {                    closable: true,                    title: thisControl.data.text,                    id: tabId,                    bodyBorder: false,                    border: false,                    icon: ‘tab.png‘                };                // 2.判斷是否已存在此Tab,若存在就顯示                var newTab = Ext.getCmp(‘app_tabContainer‘).getComponent(tabId);                if (!newTab) {                    // 2.1 載入業務檔案                    var tabPath = ‘app.‘ + tabId; // 介面路徑 eg:app.ShipMgr.ShipMgrP                    Ext.syncRequire(tabPath, function () {                        newTab = Ext.create(tabId, tabConfig);                        Ext.getCmp(‘app_tabContainer‘).add(newTab);                        Ext.getCmp(‘app_tabContainer‘).setActiveTab(newTab);                    });                } else {                    // 2.2 已存在此業務的tab頁就直接設定active                    Ext.getCmp(‘app_tabContainer‘).setActiveTab(newTab);                }            }        }    }  })

 

2.2 業務tab頁的切換,修改頁面URL的值

說明:此功能主要用於根據URL直接存取具體的業務額,當然訪問之前最好還要做下許可權判斷。

步驟:建立或切換tab頁 → 選中菜單的節點 → 修改頁面URL

代碼:在tab容器添加tabchange事件

Ext.create(‘Ext.tab.Panel‘, {    id: ‘app_tabContainer‘,    region: ‘center‘,    autoScroll: true,    listeners: {        tabchange: function (thisControl, newCard, oldCard) {            var tabId = newCard.id;            // 1.選中菜單的節點            var node = Ext.getCmp(‘app_tree‘).store.getNodeById(tabId);            if (node) {                Ext.getCmp(‘app_tree‘).getSelectionModel().select(node);            } else {                Ext.getCmp(‘app_tree‘).getSelectionModel().select(0);            }                       // 2.修改url            if (oldCard) {                history.pushState(‘‘, ‘‘, location.href.split(‘#‘)[0] + ‘#‘ + newCard.id);            }        }    }}),

 

 

3. 線上示範地址

線上地址:http://www.akmsg.com/ExtJS/index.html

  

==================================系列文章==========================================

本篇文章:7.5  ExtJS 4.2 業務開發(一)首頁搭建

Web開發之路系列文章

 

ExtJS 4.2 業務開發(一)首頁搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.