`
witcheryne
  • 浏览: 1100331 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

使用OOP的方式扩展ExtJS UI组建 - 更新版

阅读更多

      最近打算对项目中用到ExtJS不分代码进行一次重构。采用OOP的方式对组建进行封装,增强UI组件的复用性,降低js部分的代码量。

 

介绍完起因,下面开始介绍如何扩展ExtJS的UI组件.

 

注意: 这里不涉及Ext4.x的内容

 

新增2.0Demo

  1. 将extjs3.3的代码添加到了 public中
  2. 修改demo的展示方式,采用实例和代码并存的方式
  3. 新增了在线访问, http://extoop.cloudfoundry.com/
  4. 2.0Demo源码可以在附件中下到

环境介绍:

如何扩展Ext JS UI:

1. 基本概念

Ext提供了Ext.extend(parentObject, newObject):Object 用来解决js的Object继承问题

在扩展UI组建时,需要关注 initComponent  和 onRender 两个方法:

 

  1. initComponent : 可以理解为构造方法,完成UI组建的初始化操作
  2. 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
1
1
分享到:
评论

相关推荐

    Java 第一阶段建立编程思想 【零钱通(OOP)】---- 代码

    Java 第一阶段建立编程思想 【零钱通(OOP)】---- 代码 Java 第一阶段建立编程思想 【零钱通(OOP)】---- 代码 Java 第一阶段建立编程思想 【零钱通(OOP)】---- 代码 Java 第一阶段建立编程思想 【零钱通(OOP)...

    08-python-oop简介-使用 OOP 对森林火灾建模-对象

    接下来,"08.02-python-使用 OOP 对森林火灾建模.ipynb"文件将详细讲解如何使用OOP来模拟森林火灾。在森林火灾模型中,`Forest`类可以进一步扩展,添加更多的属性和方法来模拟火灾的复杂性。例如,可以增加`burnt_...

    99 Bottles of OOP A Practical Guide to Object-Oriented Design 1st Edition

    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面向对象编程].doc

    ExtJs学习资料14-OOP[JavaScript面向对象编程]

    java初级oop基础

    ### Java初级OOP基础知识详解 #### 一、面向对象与面向过程的区别 在软件开发领域,面向对象(Object-Oriented Programming, OOP)和面向过程(Procedure-Oriented Programming, POP)是两种不同的编程思想。 - *...

    轻松搞定Extjs 带目录

    它强调了JavaScript面向对象编程(OOP)在Extjs框架中的应用,并通过实例演示了如何使用各种组件和布局来创建复杂的用户界面。本教程通过递进式的结构,使读者从基础知识起步,逐步掌握Extjs的高级应用,最终能够...

    homework-of-oop-course-design-master.zip

    "homework-of-oop-course-design-master.zip" 这个压缩包文件,正是针对Java课程设计的一份宝贵资源,包含了Java学习资料、项目源码及教程,旨在帮助学习者深化对Java的理解,提高编程技能。 面向对象编程(Object-...

    PyPI 官网下载 | oop_ext-0.1.8-py2.py3-none-any.whl

    资源来自pypi官网。 资源全名:oop_ext-0.1.8-py2.py3-none-any.whl

    Python库 | oop_ext-0.1.8-py2.py3-none-any.whl

    首先,我们关注的是`oop_ext`,这显然是一个Python库的名字,它专注于面向对象编程(Object-Oriented Programming, OOP)的扩展。版本号`0.1.8`表明这是该库的第0.1.8次更新,可能包含了错误修复、新功能或者性能...

    ExtJS-3.0.0.rar

    ExtJS是一个广泛使用的JavaScript库,特别适用于构建富客户端应用程序。3.0.0版本是该库的一个里程碑,提供了丰富的组件和强大的数据绑定功能。在深入探讨ExtJS 3.0.0的知识点之前,让我们先了解一下JavaScript的...

    OOP-2-M-19-41743-3:OOP 2项目公开19-41743-3

    标题中的“OOP-2-M-19-41743-3”很可能是一个课程或项目的编号,指的是面向对象编程(Object-Oriented Programming,简称OOP)的第二个模块,可能是在2019年进行的,编号为41743-3。这个项目与C#编程语言相关,因为...

    php+ExtJS 开发实战

    面向对象编程(OOP)是ExtJS框架的核心设计理念之一。通过采用面向对象的方法,开发者可以更好地组织代码结构,提高代码的复用性和维护性。 - **类与继承**: 在ExtJS中,可以通过定义类来创建组件,并通过继承机制...

    oop-java-optimus-prime-SinyiMark:oop-java-optimus-prime-SinyiMark由GitHub Classroom创建

    标题中的"oop-java-optimus-prime-SinyiMark"暗示了这是一个关于Java面向对象编程(Object-Oriented Programming, OOP)的项目,可能是一个课程作业或练习,旨在优化算法,模仿“擎天柱”——这个名称可能是为了激发...

    OOP1-Pet-Shop-Start:Python OOP分配的起始文件-Pet Shop

    面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它将程序设计为由相互作用的对象组成,这些对象具有属性(数据)和行为(方法)。Python是一种支持OOP的语言,其语法简洁明了,非常...

    面向对象程序设计实验C++

    分别是:1-实验一-通讯录条目非oop版 2-实验二-通讯录条目oop版 3-实验三-构造函数与析构函数 4-实验四-非多态版的通讯录 5-实验五-继承ForStu 6-实验六-操作符重载 7-实验七-静态数据成员 8-实验八-多态版的通讯录 ...

Global site tag (gtag.js) - Google Analytics