UI器件练手:用Ext JS制作“关于”对话框(适合Ext新手)。

有时候我们接触Ext会不会因为它的羞涩的JS语法让我们感觉到,驯服它不是一件容易的事呢?或许大家初初接触的时候,没错,是有很多的例子,但叹谓之余,仍感觉是老鼠来拉耗子,无从入手呢? 也许,我们应该静下心来,不一定要拼命地钻,不经意的一个界面,就可以由Ext绘制而成,好像这里为大家介绍的一个软件界面中常见的“关于”对话框。

下图就是最终完成的截图,不会太复杂,正好说明Ext组件的基本运用。

 

首先,引入必须的CSS样式规则和about.js文件到页面。about.js包含了Ext.ux.edk.aboutDialog类。以下是组件涉及的CSS样式:

.aboutDlg {
width: 308px;
height: 240px;
padding-top: 20px;
}
.aboutDlg_btn {
background-color: #eaeaea;
width: 308px;
height: 56px;
text-align: center;
}
.aboutDlg p {
color: #4b4b4b;
margin: 15px;
}

然后,按以下new语句创建aboutDialog的实例,修改对应的配置项参数(例如你可修改那个图片,this.picture的配置项),即可创建属于自己软件的关于对话框!启动对话框的代码如下:

Ext.onReady(function(){
(new Ext.ux.edk.aboutDialog({
picture : 'setup_2.jpg'
,AppVersion : .9
,AppText : '"Html、Javascript、DOM是Ajax浏览器页面开发必须掌握的基础知识,否则,页面编程无从谈起。"'
,AppLinkText : 'Ext中文网'
,AppLinkHref : 'http://www.ajaxjs.com'
})).show();
});

我们以Ext.Window写出新的扩展,Ext都是这样,一个个组件都是继承而来的,利用类库就是这个Ext SDK里面已经提供的类,比如现在的这个Ext.Window,在其基础上展开我们的新组件的旅程,这样在不断有新的组件,就从不同的UI元件上新继承。

Ext.ns('Ext.ux.edk');
/**
* @class Ext.ux.aboutDialog
* @extends Ext.window
* @cfg isXXL {Boolean} (Optional) true if about Dialog will look more larger(for some skins/thmem).
* @cfg AppName {String} Application Name
* @cfg AppVersion {String} Application Version
* @cfg AppText {String} Text to display about App.
* @cfg AppLinkHref {String} The App. URL to open with new Window.
* @cfg AppLinkText {String} The App. URL to display text,must be started with 'http://'
* @cfg showExtJS {Boolean} (Optional) true if show the text about ExtJS
* @cfg ExtVersion {String} (Optional) the version of Ext
* @cfg icon {String} (Optional) App. icon path ,size in 15x15 is better
* @cfg picture {String} The picture on dialog's left,size in 15x15 is better
**/
Ext.ux.edk.aboutDialog = Ext.extend(Ext.Window, {
cls : 'x-aboutDialog'
,modal : true
,resizable : false
,title : '关于deepCMS'
,width : 488
,height : Ext.isIE ? 350:343
,isXXL : false
,showExtJS : true
,ExtVersion : '3.0'
,initComponent : function(){
this.html = {
tag : 'table',
style : 'background:#f4f4f4',
children : {
tag: 'tr',
children: [{
tag : 'td'
,valign : 'top'
,children : {
tag : 'img'
// ,height : 316
,src : this.picture
}
}, {
tag : 'td'
,valign : 'top'
,children : [{
tag : 'div'
,cls : 'aboutDlg',
html : '<p style="text-align:right;" mce_style="text-align:right;">' +
'当前版本:' +
this.AppVersion +
'<br />Powered by ExtJs UI Engine<br />Ext All in One Lib:Ext.ux.Helper v0.3' +
'</p>' +
'<p>' +
'Extjs and Extjs logos and trademarks of Ext JS, LLC.All rights reserved.<br />' +
this.AppText +
'</p><br />' +
'<p>' +
'deepCMS采用<a rel="license" target="_blank" href="http://creativecommons.org/licenses/LGPL/2.1/deed.zh" mce_href="http://creativecommons.org/licenses/LGPL/2.1/deed.zh">' +
'CC-GNU LGPL协议</a>进行许可。' +
'</p>'
}, {
tag : 'div'
,cls : 'aboutDlg_btn'
,html : String.format('<br /><button style="width:75%;margin-right:8px;">Upgrde/Support:{0}</button><button>OK</button>', this.AppLinkText)
}]
}]
}
};
Ext.ux.edk.aboutDialog.superclass.initComponent.apply(this, arguments);
}
// @overried
,afterRender: function(){
Ext.ux.edk.aboutDialog.superclass.afterRender.apply(this, arguments);

// 打开网址
this.getEl().child('button:first').on('click', function(){
window.open(this);
}, this.AppLinkHref);

// this已经是aboutDialog实例,即可被委托了,故this.close即可直接被引用到事件处理器。
this.body.child('button:last').on('click', this.close, this); //
}
});

(虽然“配置项”的注释部分是英文,但俺写的是非常地道的中式英文:))

可以跟大家说,只要上面的每一行代码都够知道个所以然,那学习Ext的缤纷大道正为阁下所敞开着…

 

此处披露的内容是《ExtJS 3详解与实践》

的补充内容,完整的资料敬请参阅《ExtJS 3 详解与实践》

一书的全面介绍。

时间: 2024-10-08 00:23:43

UI器件练手:用Ext JS制作“关于”对话框(适合Ext新手)。的相关文章

《Ext JS实战》——2.2 Ext.Element类

2.2 Ext.Element类 所有使用了JavaScript的Web应用程序都会围绕着一个核心,也就是HTML的Element.JavaScript对DOM节点的访问能力让我们能够随意.灵活地操作DOM,包括增加.删除.美化或者修改文档中的任意节点内容.通过ID引用一个DOM节点的传统方法是: 这个getElementById方法很好用,可以执行一些类似改变innerHTML的内容,或者美化和配置一个CSS类这样的基本任务.不过要是想对该节点做更多的事情,例如管理它的事件,在有鼠标点击时应用

《Ext JS实战》——1.4 Ext JS 3.0的新特性

1.4 Ext JS 3.0的新特性 Ext JS 2.0中引入的一些变化是颠覆性的,这就导致从级到2.0相当困难.这主要是因为这一版引入了一个更加现代的布局管理器以及一个崭新的.健壮的组件层次,许多Ext JS 1.x的代码都会因此而崩溃.值得庆幸的是,由于Ext JS 2.0的良好的工艺设计,从Ext JS 2.0到3.0的移植就非常容易了.尽管Ext JS 3.0新增的内容并不怎么神奇,不过最新的版本还是可圈可点的,有些新增的特性还是值得讨论的. 1.4.1 Ext JS通过Direct完

《Ext JS实战》——导读

**前言**Ext(读作Eee-ecks-tee)JS 3.0是一个功能强大的UI框架,可以构造丰富.健壮的跨浏览器应用,它最初是由Jack Slocum在2006年开发出来的.从那时起,Ext JS就经历了一个爆炸性的增长,因为它满足了Web开发人员对于一个真正的.有完整的组件和事件模型的UI框架的需要.这也使得它在竞争激烈的Web 2.0库领域独树一帜. 本书会带你对框架进行深度探索,会通过大大小小的例子演示Ext JS的高效使用方法.而且本书还使用了许多手绘的插图帮你加快学习的速度. Ex

Ext JS 5 对平板的支持 【已翻译100%】

Ext JS 已经被公认为桌面web应用的领衔框架. 计算机应用市场,无论是在个人还是企业领域,都因为平板开始挑战全球个人PC的销售量而变得云诡波谲起来. Sencha 认识到了这种变化,并在其 Ext JS 5 中退出了新的特性和功能优化. Ext JS 5 从 Sencha Touch 2 那里学到了一堆的新花样. 多年在最佳移动web应用框架领域的经验集于一身,使得其在台式机上面的产品也能在现在平板上得到完美的呈现. 我们可以从整个全线的更新中看到这些更新 - 类系统,事件管理,小窗口,还

《Ext JS实战》——第1章 独特的框架 1.1 认识Ext JS

第一部分 Ext JS介绍 欢迎阅读<Ext JS实战>,本书是对Ext JS世界的深度之旅.在本书中,不仅要学习如何利用Ext JS框架完成各种任务,还会学习构成框架的各种组件和部件之间的差异. 通过第1章到第3章的学习,我们能够对框架的基础部分有必要的理解.我们的旅途从第1章正式起航,在第1章会学习框架的基础知识.第2章是"热身"章,会了解一些能让应用程序正确运行的关键要素.第3章会涉及框架的一些内部机制,例如组件模型和容器模型. 学完这一部分后,就可以探索Ext JS

《Ext JS 4 First Look》翻译之五:Grid、Tree和Form   

5.1. Grid panel      Grid应该是我们在开发时使用的最多的组件之一.Extjs4对其进行了重大的改进.      Extjs4与Extjs3的Grid生成不同的HTML.Sencha称其为智能渲染(Intelligent Rendering).Extjs3中即使不需要Grid的所有特性,它也会生成整套HTML.而Extjs4就只会渲染Grid所用到的特性,这样就使 渲染最小化且提高了性能.      在学习Extjs4中Grid的新特性前,让我们先了解在Extjs4中如何创

《Ext JS 4 First Look》翻译之五:Grid、Tree和Form

<Ext JS 4 First Look>翻译之五:Grid.Tree和Form      至此我们已经学习了Data包和布局等API.下面我们来学习作为Extjs框架中我们用得最多的用来展现数据的Grid.Tree和Form吧! 目录: 5.1. Grid panel 5.1.1. Columns 5.1.2. Feature 5.1.2.1. Ext.grid.feature.Grouping 5.1.2.2. Ext.grid.feature.Summary 5.1.2.3. Ext.g

利用Ext Js生成动态树实例代码_javascript技巧

一. 需求 要求生成一颗部门树,初始只列出根部门 当点击一个部门节点时,动态载入该部门下的直属子部门,并展开该部门节点 部门节点要求支持右键单击事件,当点击右键时,列出相关操作菜单 二. 关键类 这里主要涉及Ext JS的两个类: Ext.tree.TreeNode Ext.menu.Menu 相关API可以参考:http://extjs.com/deploy/ext/docs/ 三. 代码示例 1. 先看一下测试页面 复制代码 代码如下: <html> <head> <me

透视Ext JS 4类背后的机制与特点(下)

在构建 Ext.Class 之时,它会分配既细又专的处理器(processors),专门处理构成类定义的每一个部分.当前Ext缺省提供了一些处理器,包括有:mixins 多态的,配置项函数的,以及处理类扩展的都是必备的.除了缺省处理器外,还可以随便自定义预处理器,预处理器是完全交给开发者可控的.因为通过分解类处理单元,就可以达到了扩展性的目的,以便允许我们针对不同的场景,去制定更合适的处理器从而满足需求(具体组装的过程可仿照下面介绍的 static 处理器举一反三). 一图胜千言,下图即官方所出