`

Ext 2-使用Widgets

    博客分类:
  • Ext
阅读更多
    使用Widgets
Widget原意为“小器件”,现指页面中UI控件

除了我们已经讨论过的核心JavaScript库,当前的Ext亦包括了一系列的最前端的JavaScirptUI组件库。文本以一个常用的widget为例子,作简单的介绍。

    MessageBox
比起略为沉闷的“HelloWolrd”消息窗口,我们做少许变化,前面我们写的代码是,单击某个段落便会高亮显示,现在是单击段落,在消息窗口中显示段落内容出来。 在上面的paragraphClicked的function中,将这行代码:
Ext.get(e.target).highlight();

替换为:
var paragraph = Ext.get(e.target);
paragraph.highlight();
Ext.MessageBox.show({ 
    title: 'Paragraph Clicked', 
    msg: paragraph.dom.innerHTML, 
    width:400, 
    buttons: Ext.MessageBox.OK, 
    animEl: paragraph 
});


这里有些新的概念需要讨论一下。在第一行中我们创建了一个局部变量(Local Variable)来保存某个元素的引用,即被单击的那个DOM节点(本例中,DOM节点指的是段落paragrah,事因我们已经定义该事件与< p>标签发生关联的了)。为什么要这样做呢?嗯...观察上面的代码,我们需要引用同一元素来高亮显示,在MessageBox中也是引用同一元素作为参数使用。 一般来说,多次重复使用同一值(Value)或对象,是一个不好的方式,所以,作为一个具备良好OO思维的开发者,应该是将其分配到一个局部变量中,反复使用这变量! 现在,为了我们接下来阐述新概念的演示,请观察MessageBox的调用。乍一看,这像一连串的参数传入到方法中,但仔细看,这是一个非常特别的语法。实际上,传入到MessageBox.show的只有一个参数:一个Object literal,包含一组属性和属性值。在Javascript中,Object Literal是动态的,你可在任何时候用{和}创建一个典型的对象(object)。其中的字符由一系列的name/value组成的属性,属性的格式是[property name]:[property value]。在整个Ext中,你将会经常遇到这种语法,因此你应该马上消化并吸收这个知识点!

使用Object Literal的原因是什么呢?主要的原因是“可伸缩性(flexibility)”的考虑",随时可新增、删除属性,亦可不管顺序地插入。而方法不需要改变。这也是多个参数的情况下,为最终开发者带来不少的方便(本例中的MessageBox.show())。例如,我们说这儿的foo.action方法,有四个参数,而只有一个是你必须传入的。本例中,你想像中的代码可能会是这样的foo.action(null, null, null, 'hello').,若果那方法用Object Literal来写,却是这样, foo.action({ param4: 'hello' }),这更易用和易读。

    Grid
Grid是Ext中人们最想先睹为快的和最为流行Widgets之一。好,让我们看看怎么轻松地创建一个Grid并运行。用下列代码替换ExtStart.js中全部语句:
Ext.onReady(function() 
{ 
var myData = [
['Apple',29.89,0.24,0.81,'9/1 12:00am'],
['Ext',83.81,0.28,0.34,'9/12 12:00am'],
['Google',71.72,0.02,0.03,'10/1 12:00am'],
['Microsoft',52.55,0.01,0.02,'7/4 12:00am'], 
['Yahoo!',29.01,0.42,1.47,'5/22 12:00am'] ];
var ds = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(myData), 
reader: new Ext.data.ArrayReader({id: 0}, [ 
{name: 'company'},
{name: 'price', type: 'float'},
{name: 'change', type: 'float'},
{name: 'pctChange', type: 'float'},
{name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'} ])
});
ds.load();
var colModel = new Ext.grid.ColumnModel([
{header: "Company", width: 120, sortable: true,dataIndex: 'company'},
{header: "Price", width: 90, sortable: true, dataIndex: 'price'},
{header: "Change", width: 90, sortable: true, dataIndex: 'change'}, 
{header: "% Change", width: 90, sortable:true,dataIndex: 'pctChange'},
{header: "Last Updated", width: 120, sortable: true,renderer: 
Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
]);
var grid = new Ext.grid.Grid('grid-example', {ds: ds, cm: colModel}); 
grid.render();
grid.getSelectionModel().selectFirstRow();
});

这看上去很复杂,但实际上加起来,只有七行代码。第一行创建数组并作为数据源。实际案例中,你很可能从数据库、或者WebService那里得到动态的数据。接着,我们创建并加载data store, data store将会告诉Ext的底层库接手处理和格式化这些数据。接着,我们定义一个column模型,用来轻松地调配Grid的每一列参数。最后我们生成这个Grid,传入data store和column模型两个对象,进行渲染并选好第一行。不是太困难吧?如果一切顺利,完成之后你会看到像这样的:

当然,你可能未掌握这段代码的某些细节(像MemoryProxy究竟是什么?)但先不要紧,这个例子的目的是告诉你,用少量的代码,创建一个富界面的多功能的UI组件而已——这是完全可能的,只要读者您有兴趣学习。这儿有许多学习Grid的资源。Ext Grid教程、交叉Gird演示和Grid API文档。

注意:以上版本只适用于Ext 1.1版本

如果是Ext 2请使用附件中的页面,页面中的js引入路径需要根据自己的工程做调整。

还有更多的..

这只是冰山一角。还有一打的UI Widgets可以供调用,如 layouts, tabs, menus, toolbars, dialogs, tree view等等。请参阅API文档中范例演示。
  • 大小: 20.2 KB
分享到:
评论

相关推荐

    ext实例-合同查询管理

    ext实例-合同查询管理 Ext JS is a cross-browser ...High performance, customizable UI widgets Well designed, documented and extensible Component model Commercial and Open Source licenses available

    EXT-js-中文手册

    使用Widgets - **组件介绍**: - **MessageBox**:用于显示模态对话框,提供确认、警告等功能。 - **Grid**:展示表格数据的强大组件,支持排序、筛选、分页等多种功能。 - **更多组件**:除了MessageBox和Grid...

    EXT-In-FirstStep

    - 解释作用域在JavaScript中的重要性,以及如何在EXT中正确使用作用域。 #### 6.2 类设计与对象创建 - 讨论EXT中的类设计模式,包括构造函数、原型继承、方法共享等,帮助构建可复用的组件。 ### 组件与布局 #### ...

    Ext框架简介-Ext框架简介

    ExtJS 的类库由以下几部分组成:底层 API(core)、控件(widgets)和实用工具(Utils)。底层 API 中提供了对 DOM 操作、查询的封装、事件处理、DOM 查询器等基础的功能。控件是指可以直接在页面中创建的可视化组件...

    ext-GXT-2.3

    Sencha GXT high performance UI widgets coupled with GXT's full interoperability with Google Web Toolkit components accelerate your web apps development process to increase your productivity

    ext-word文档

    例如,要选择页面上所有的`&lt;div&gt;`标签,可以使用`Ext.query('div')`。这些方法极大地简化了DOM操作的复杂性,提高了开发效率。 #### 响应事件 事件处理是ExtJS中另一个重要的特性。它允许开发者通过简单的方法绑定...

    ext-1.0.1.rar

    2. **Components**:EXT提供了大量的UI组件,如表格(Grid)、面板(Panel)、菜单(Menu)、按钮(Button)等。这些组件具有丰富的功能和高度可定制性,可以满足各种复杂的界面需求。 3. **Data Package**:数据包...

    ext学习文档

    - **使用Widgets**: 介绍了EXT提供的各种小部件,如MessageBox、Grid等。 - **使用Ajax**: 指导如何使用EXT进行Ajax调用,包括与不同服务器端技术的集成。 - **EXT源码概述**: 对EXT的源代码进行了初步解析。 - **...

    Ext2.2 中文手册

    - **使用 Widgets**:Ext 提供了多种预定义的 UI 组件(Widgets),如 MessageBox、Grid 等。 - **使用 Ajax**:通过 `Ext.Ajax.request` 方法发起 Ajax 请求,并处理服务器端返回的数据。 #### 3. EXT 源码概述 ...

    EXT最新使用手册

    ### EXT最新使用手册知识点概览 #### 1. EXT简介 - **定义**: EXT是一个功能强大的JavaScript库,用于构建交互式Web应用程序。它提供了一系列工具和API,使得开发者能够轻松地创建复杂的用户界面。 - **目标用户**:...

    Ext学习文档(介绍 Core Util DD Widgets并有例子)

    例如,你可以使用`Ext.get`来获取DOM元素,`Ext.on`来添加事件监听器,以及`Ext.Anim`来创建平滑的动画效果。 2. **Ext Util**:工具集模块包含一系列实用函数,用于解决开发中遇到的各种问题。比如,`Ext.util....

    GWT-ext 布局示例

    通过使用 `com.gwtext.client.widgets.layout.VerticalLayout` 类,子组件将按照添加顺序从上到下排列,如代码清单2所示。这将生成如图2所示的布局。 3. **边框布局** (BorderLayout):边框布局提供了更复杂的空间...

    Ext JS in Action, 2nd Edition

    Ext JS is a mature JavaScript web application framework that provides modern UI widgets and an advanced MVC architecture. It helps you manage tedious boilerplate and minimize hand-coded ...

    EXT中文教程

    EXT2是EXT框架的一个重要版本,引入了许多新的组件和特性,如DataView、XTemplate等,进一步增强了框架的能力。 总之,EXT框架为Web开发提供了强大的工具集,涵盖了从DOM操作、事件处理到高级组件和布局管理的...

    [Ext JS] Ext JS 实战 第2版 英文版

    ll learn the best practices for building and scaling full featured web applications including how to customize and build Ext widgets Fully revised for Ext JS 4 0 ☆ 出版信息:☆ [作者信息] Jesus ...

Global site tag (gtag.js) - Google Analytics