extjs自定义组件类

在使用extjs开发应用系统时,难免会出现一个js文件内包含数百行甚至上千行代码的情况,例如程序主界面或者复杂一点的界面,下面介绍如何通过自定义组件减少单个extjs javascript代码行数的方法。

下图中的主界面显示了两个统计图:

最初的时候统计图的js代码是写死在tagpanel里面的,通过extjs 自定义组件的方法拆分成单独的类文件以后的代码:

 Ext.define('app.view.main.Main_Pie_Chart', {
	extend: 'Ext.panel.Panel',
	alias : 'widget.main_pie_chart',
	chart_store:null,
	layout: {
		type: 'fit'
	},
	initComponent: function() {
		var me = this;
		Ext.applyIf(me, {
			title:'库存商品成本分布饼图',
			items:[
				{
					xtype:'chart',
					//region: 'center',
					animate: true,
					width:450,
					height:400,
					store:me.chart_store,
					shadow: true,
					legend: {
						position: 'right'
					},
					insetPadding: 60,
					theme: 'Base:gradients',
					series: [{
						type: 'pie',
						field: 'data1',
						showInLegend: true,
						donut: 35,
						tips: {
							trackMouse: true,
							width: 140,
							height: 28,
							renderer: function(storeItem, item) {
								//var total = 0;
								//storeItem.each(function(rec) {
								//    total += rec.get('data1');
								//});
								//this.setTitle(storeItem.get('product_name') + ': ' + Math.round(storeItem.get('data1') / total * 100) + '%');
								this.setTitle(storeItem.get('product_name') + ': ' +storeItem.get('data1')+'元库存成本');
							}
						},
						highlight: {
							segment: {
								margin: 20
							}
						},
						label: {
							field: 'product_name',
							display: 'rotate',
							contrast: true,
							font: '18px Arial'
						}
					}]
				}
			]
		});
		me.callParent(arguments);
	}
});

上面的代码中定义了一个叫做“app.view.main.Main_Pie_Chart”的类,在tabpanel里面需要引用时需要借助requires导入,见下面的代码:

Ext.define(‘app.view.Viewport‘, {
    renderTo: Ext.getBody(),
    extend: ‘Ext.container.Viewport‘,
    alias: ‘widget.main_viewport‘,
    requires: [
        ‘Ext.tab.Panel‘,
        ‘Ext.layout.container.Border‘,
        ‘app.store.StockChartPieStore‘,
        ‘app.view.main.Main_Top_Panel‘,
        ‘app.view.main.Main_Pie_Chart‘,
        ‘app.view.main.Main_Column_Chart‘
    ],
    layout: {
        type: ‘border‘
    },

具体在主界面的tabpanel使用的代码就可以简化为:

 {
    xtype: ‘tabpanel‘,
    region: "center",
    id: ‘content_tabpanel‘,
    margins: ‘2 5 5 0‘,
    activeTab: 0,
    border: false,
    items: [{
        id: ‘start-panel‘,
        title: ‘欢迎使用‘,
        layout: ‘hbox‘,
        bodyStyle: ‘padding:25px; background-image: url(./img/bg.jpg); background-repeat: no-repeat;  background-attachment: fixed;  background-position: 100% 100%‘,
        items: [
            {
                xtype: ‘main_pie_chart‘,
                chart_store: chart_data_store
            }
            ,
            {
                xtype: ‘main_column_chart‘,
                chart_store: chart_data_store
            }
        ]
    }

注意这里面其实是引用了两个自定义的extjs 统计图组件类,两个图对应同一个store,所以在写完xtype去引用自定义组件后又提供了chart_store这个extjs自定义类属性。

时间: 2024-12-03 16:30:57

extjs自定义组件类的相关文章

Flash CS 自定义组件

2012年的时候,做了一些研究,可以后来没有去整理,没有去用到项目里头,现在把这些东西都放出来纪念一下,也给有需要的人作为参考. 基本知识: Flash使用基本知识与ActionScript 3.0的基本知识 原理说明: 本项目的组件是扩展自flash cs自带的fl-component,对相关的类进行扩展,或者将其皮肤换成自定义皮肤. 注意事项: 开发自定义组件之前,记得要对myComponent.fla和myComponentShim.fla进行版本管理. 开发流程 1. 打开myCompo

【ExtJS】自定义组件datetimefield(一)

目的: ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time.不过没有一个在选择日期时选择时间的控件datetimefield.目的就是运用自定义组件的方法,来扩展下拉日期选择控件Ext.form.field.Date,在下拉框中添加时间选择的组件.目标效果: 第一步:继承Ext.picker.Date,创建My.picker.DateTime类 1 Ext.define('My.picker.DateTime', {

【ExtJS】关于自定义组件(一)

一.目的: ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time.不过没有一个在选择日期时选择时间的控件datetimefield.目的就是运用自定义组件的方法,来扩展下拉日期选择控件Ext.form.field.Date,在下拉框中添加时间选择的组件.目标效果: 二.一些知识的梳理: 当自定义创建一个新类时,最好根据需要继承一个功能相近的基类,这是因为Ext JS 提供的自动化生命周期管理将会被合适的布局管理器管理并且

ExtJS(3)- 自定义组件(星级评分)

今天介绍ExtJS的组件开发,这里以星级评分为示例,首先来看看效果图: 然后是功能操作:鼠标移动到五个星星上面时,会有tooltip显示当前的分值.如图:鼠标悬停在第四颗星星时前四颗星星显示高亮笑脸,当点击下去时锁定笑脸并且设定份数为4. 然后我们来说一下实现原理,Ext的组件基本单元是Ext.Component,所以自定义组件可以继承Component,然后显示部分直接用html来显示,包括css和动态事件都可以直接在html上编辑添加. 接下来我们来看代码: Ext.define('Pact

ExtJS 4 组件详解

ExtJS 4 的应用界面是由很多小部件组合而成的,这些小部件被称作"组件(Component)",所有组件都是Ext.Component的子类,Ext.Component提供了生命周期管理包括初始化.渲染.大小和尺寸管理.销毁等功能,这使得所有Ext.Component的子类都自动分享了这些能力.ExtJS提供了各式各样丰富的组件,每一个组件都很容易被扩展创建成自定义组件. The Component Hierarchy 组件层级 容器(Container)是个可以容纳其他组件的特殊

ExtJS关于组件Component生命周期

extjs组件生命周期大体分为3个阶段:初始化.渲染.销毁. 第一阶段:初始化 初始化工作开始于组件的诞生,所有必须的配置设定.事件注册.预渲染处理等都在此时进行. 1.应用组件的配置: 当初始化一个组件的实例时,传递的组件配置对象包含了希望让组件拥有的所有功能,这些都是在Ext.Component基类的前几行代码完成的. 2.注册事件: 诸如enable/disable,show,hide,render,destory,state restore,state save等等事件,是所有继承于Ex

[ExtJS学习笔记]第七节 Extjs的组件components及其模板事件方法学习

本文地址:http://blog.csdn.net/sushengmiyan/article/details/38487519 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站: http://ww

1、开发自定义组件简要

一.自定义组件分类 Customized Component:继承VIew ,增加更多的属性和事件.  横向扩展 Compound Component: 继承ViewGroup , 把多个简单控件通过布局拼装一个复合控件.横向扩展 二.定义组件步骤 1 选择继承类(肯定是View or View的子类). 2 类的初始化:新增属性    属性的初值设定. 3 重载方法: 布局及呈现onDraw() , onMeasure() 事件(自定义事件)onKeyEvent() ...  监听器/重载函数

【REACT NATIVE 系列教程之二】创建自定义组件&&导入与使用示例

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2219.html 在上一篇  [REACT NATIVE 系列教程之一]触摸事件的两种形式与四种TOUCHABLE组件详解 中的最后介绍了如何使用Touchable的四种组件进行监听触摸事件.  那么紧接着我们利用Touchable来包装一个带图片的Button组件,且设计成可接受很多自定义参数. 一:创建我们自定义