最近打算对项目中用到ExtJS不分代码进行一次重构。采用OOP的方式对组建进行封装,增强UI组件的复用性,降低js部分的代码量。
介绍完起因,下面开始介绍如何扩展ExtJS的UI组件.
注意: 这里不涉及Ext4.x的内容
新增2.0Demo
- 将extjs3.3的代码添加到了 public中
- 修改demo的展示方式,采用实例和代码并存的方式
- 新增了在线访问, http://extoop.cloudfoundry.com/
- 2.0Demo源码可以在附件中下到
环境介绍:
如何扩展Ext JS UI:
1. 基本概念
Ext提供了Ext.extend(parentObject, newObject):Object 用来解决js的Object继承问题
在扩展UI组建时,需要关注 initComponent 和 onRender 两个方法:
-
initComponent : 可以理解为构造方法,完成UI组建的初始化操作
-
onRender : 为渲染方法,组建渲染时会调用该方法。在此时也会确定ExtJS组件之间的从属关系。
2. 代码:
Ext.namespace("dy.grid");
/*
扩展一个Grid, 用来显示名称。更多的扩展可以看 EditGrid 源码.
*/
dy.grid.NameGrid = Ext.extend(Ext.grid.GridPanel, {
title: 'This is my grid panel',
width: 500,
height: 400,
// component组件的初始化方法,类似Java中的构造方法
initComponent : function() {
// 初始化父类Component, 类似Java中的super(), 必须要显示调用
dy.grid.NameGrid.superclass.initComponent.apply(this, arguments);
this.store = new Ext.data.Store({
autoLoad: true,
proxy: new Ext.data.HttpProxy({
url: '/js/data.json'
}),
reader: new Ext.data.JsonReader({
idProperty: 'id',
root: 'rows',
totalProperty: 'result',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'tech', type: 'java'}
]
})
});
},
// 渲染的时候会调用这个方法,内部组件的添加可以放这里
onRender: function() {
// super.render, 必须要显示调用
dy.grid.NameGrid.superclass.onRender.apply(this, arguments)
},
// column module, short name is cm
columns: [{
id: 'name',
header: 'Name',
dataIndex: 'name'
}, {
id: 'tech',
header: 'Tech',
dataIndex: 'tech'
}]
});
// registry xtype
Ext.reg('namegrid', dy.grid.NameGrid)
Demo代码说明:
-
extoop_1.0.zip : 本次Demo源码,前端代码都包含在public目录下,用git打得包,没有包含ExtJS库文件
-
extjs3.zip : extjs3.3库的部署代码,需要放到 extoop/public 目录下
- 代码的组织方式如下:
如何使用Demo:
1. 如果你使用ruby:
cd extoop
bundle install
ruby app.rb
访问 http://localhost:4578/
2. 如果你使用java用户
用eclipse新建一个Dynamic Web Project, 然后把extoop/public扔到 WebContent目录下即可。
参考资料
扩展ExtJS组件: http://extjs.org.cn/node/286
- 大小: 24.9 KB
分享到:
相关推荐
Java 第一阶段建立编程思想 【零钱通(OOP)】---- 代码 Java 第一阶段建立编程思想 【零钱通(OOP)】---- 代码 Java 第一阶段建立编程思想 【零钱通(OOP)】---- 代码 Java 第一阶段建立编程思想 【零钱通(OOP)...
接下来,"08.02-python-使用 OOP 对森林火灾建模.ipynb"文件将详细讲解如何使用OOP来模拟森林火灾。在森林火灾模型中,`Forest`类可以进一步扩展,添加更多的属性和方法来模拟火灾的复杂性。例如,可以增加`burnt_...
99 Bottles of OOP is a practical guide to writing cost-effective, maintainable, and pleasing object-oriented code. It explores: Recognizing when code is “good enough” Getting the best value from ...
ExtJs学习资料14-OOP[JavaScript面向对象编程]
### Java初级OOP基础知识详解 #### 一、面向对象与面向过程的区别 在软件开发领域,面向对象(Object-Oriented Programming, OOP)和面向过程(Procedure-Oriented Programming, POP)是两种不同的编程思想。 - *...
它强调了JavaScript面向对象编程(OOP)在Extjs框架中的应用,并通过实例演示了如何使用各种组件和布局来创建复杂的用户界面。本教程通过递进式的结构,使读者从基础知识起步,逐步掌握Extjs的高级应用,最终能够...
"homework-of-oop-course-design-master.zip" 这个压缩包文件,正是针对Java课程设计的一份宝贵资源,包含了Java学习资料、项目源码及教程,旨在帮助学习者深化对Java的理解,提高编程技能。 面向对象编程(Object-...
资源来自pypi官网。 资源全名:oop_ext-0.1.8-py2.py3-none-any.whl
首先,我们关注的是`oop_ext`,这显然是一个Python库的名字,它专注于面向对象编程(Object-Oriented Programming, OOP)的扩展。版本号`0.1.8`表明这是该库的第0.1.8次更新,可能包含了错误修复、新功能或者性能...
ExtJS是一个广泛使用的JavaScript库,特别适用于构建富客户端应用程序。3.0.0版本是该库的一个里程碑,提供了丰富的组件和强大的数据绑定功能。在深入探讨ExtJS 3.0.0的知识点之前,让我们先了解一下JavaScript的...
标题中的“OOP-2-M-19-41743-3”很可能是一个课程或项目的编号,指的是面向对象编程(Object-Oriented Programming,简称OOP)的第二个模块,可能是在2019年进行的,编号为41743-3。这个项目与C#编程语言相关,因为...
面向对象编程(OOP)是ExtJS框架的核心设计理念之一。通过采用面向对象的方法,开发者可以更好地组织代码结构,提高代码的复用性和维护性。 - **类与继承**: 在ExtJS中,可以通过定义类来创建组件,并通过继承机制...
标题中的"oop-java-optimus-prime-SinyiMark"暗示了这是一个关于Java面向对象编程(Object-Oriented Programming, OOP)的项目,可能是一个课程作业或练习,旨在优化算法,模仿“擎天柱”——这个名称可能是为了激发...
面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它将程序设计为由相互作用的对象组成,这些对象具有属性(数据)和行为(方法)。Python是一种支持OOP的语言,其语法简洁明了,非常...
分别是:1-实验一-通讯录条目非oop版 2-实验二-通讯录条目oop版 3-实验三-构造函数与析构函数 4-实验四-非多态版的通讯录 5-实验五-继承ForStu 6-实验六-操作符重载 7-实验七-静态数据成员 8-实验八-多态版的通讯录 ...