无废话ExtJs 入门教程二十一[继承:Extend]

在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性。而这些属性可以通过“继承”定义在我们定义的新组件中,从而达到重用的目地。
1.代码如下:

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <title></title>
5 <!--ExtJs框架开始-->
6 <script type="text/javascript" src="/Ext/adapter/ext/ext-base-debug.js"></script>
7 <script type="text/javascript" src="/Ext/ext-all-debug.js"></script>
8 <link rel="stylesheet" type="text/css" href="/Ext/resources/css/ext-all.css" />
9 <!--ExtJs框架结束-->
10 <script type="text/javascript">
11 Ext.onReady(function () {
12 //----------------继承前开始---------------//
13 var Panel1 = new Ext.Panel({
14 title: '标题',
15 width: 500,
16 height: 100,
17 html: '好好学习'
18 });
19 var Panel2 = new Ext.Panel({
20 title: '标题',
21 width: 500,
22 height: 100,
23 html: '天天向上'
24 });
25 //----------------继承前结束---------------//
26 //----------------继承后开始---------------//
27 var MyPanel = Ext.extend(Ext.Panel, {
28 title: '标题',
29 width: 500,
30 height: 100
31 });
32 var MyPanel1 = new MyPanel({
33 html: '好好学习'
34 });
35 var MyPanel2 = new MyPanel({
36 html: '天天向上'
37 });
38 //----------------继承后结束---------------//
39 //定义新的类FormPanel,并且把变化的属性暴露出来以便以后继承
40 var MyFormPanel = Ext.extend(Ext.form.FormPanel, {
41 title: '属性外露',
42 width: 500,
43 labelWidth: 80,
44 initComponent: function () {
45 this.items = [{
46 xtype: 'textfield',
47 fieldLabel: '姓名',
48 id: this.usernameid,//变化的部份
49 name: 'username',
50 }];
51 this.buttons = [{
52 text: '确 定',
53 handler: this.submit,//变化的部份
54 scope: this
55 }, {
56 text: '取 消',
57 handler: this.cancel,//变化的部份
58 scope: this
59 }];
60 MyFormPanel.superclass.initComponent.call(this, arguments); //调用父类的initComponent
61 }
62 });
63 //创建测试对象1
64 var testForm1= new MyFormPanel({
65 usernameid:'username',
66 submit: function () {
67 alert(Ext.getCmp('username').getValue());
68 },
69 cancel: function () {
70 testForm1.getForm().reset();
71 }
72 });
73 //创建测试对象2
74 var testForm2=new MyFormPanel({
75 title: '覆盖属性',
76 usernameid:'usernameid',
77 submit: function () {
78 alert(this.usernameid);
79 },
80 cancel: function () {
81 testForm2.getForm().reset();
82 }
83 });
84 //创建窗体
85 var win = new Ext.Window({
86 title: '窗口',
87 id: 'window',
88 width: 500,
89 height: 620,
90 resizable: true,
91 closable: true,
92 maximizable: true,
93 minimizable: true,
94 items: [Panel1, Panel2, MyPanel1, MyPanel2, testForm1,testForm2]
95 });
96 win.show();
97 });
98 </script>
99 </head>
100 <body>
101 <!--
102 说明:
103 (1)var MyPanel = Ext.extend(Ext.Panel, {
104 title: '标题',
105 width: 500,
106 height: 100
107 });
108 Ext.extend 用来继承已有的类 这里给 title,width,height加上了默认值
109 第12行至37行,简单介绍了组件的继承,如:平时我们在用MessageBox.show()时,一般会有4种情况,“成功”,“失败”,“出错”,“确认”。。
110 我们通过简单的继承,就可以把这4类文本框封装的很好,每次使用时new我们的新类即可。
111 (2)第38--82行,我做了个组件套用子组件的例子,给组件附加子组件须在 initComponent: function () {} 初始化组件时加入,
112 并且在完成后,还要显示的调用 MyFormPanel.superclass.initComponent.call(this, arguments); //调用父类的initComponent
113 我们在开发中,常会用到 GridPanel,会定义分页组件,按钮等,经过这个实例,我们可以在把原有的 GridPanel再包一层,以保证软件中的“单一原则”。
114 其中变化的部分我们可以通过定义新属性把他外露出来。如上例所示。
115 -->
116 </body>
117 </html>

2.效果如下:

无废话ExtJs 入门教程二十一[继承:Extend]的更多相关文章
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- 无废话ExtJs 入门教程二[Hello World]
无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...
- 无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two]
无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two] extjs技术交流,欢迎加群(201926085) 不管是几级下拉列表的联动实现本质上都是根据某个下拉列表的变化,去动态加载其 ...
- 无废话ExtJs 入门教程十一[下拉列表:Combobox]
无废话ExtJs 入门教程十一[下拉列表:Combobox] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个一个下拉列表: 1.代码如下: 1 <!DOCT ...
- 无废话ExtJs 入门教程十六[页面布局:Layout]
无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...
- 无废话ExtJs 入门教程十九[API的使用]
无废话ExtJs 入门教程十九[API的使用] extjs技术交流,欢迎加群(201926085) 首先解释什么是 API 来自百度百科的官方解释:API(Application Programmin ...
- 无废话ExtJs 入门教程十七[列表:GridPanel]
无废话ExtJs 入门教程十七[列表:GridPanel] extjs技术交流,欢迎加群(201926085) 在Extjs中,GridPanel用于数据显示,即我们平时说的列表页.在本节中,我们先对 ...
- 无废话ExtJs 入门教程六[按钮:Button]
无废话ExtJs 入门教程六[按钮:Button] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个按钮“提交”与重置.如下所示代码区的第68行位置, butt ...
- 无废话ExtJs 入门教程四[表单:FormPanel]
无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...
随机推荐
- UIDynamic(捕捉行为)
一.简介 可以让物体迅速冲到某个位置(捕捉位置),捕捉到位置之后会带有一定的震动 UISnapBehavior的初始化 - (instancetype)initWithItem:(id <UID ...
- python的正则表达式
1 元字符: 1.1 . .除了换行符以外的任何单个字符 1.2 ^ ^只匹配起始字符 temp1=re.findall('^morra','nsudi werwuirnmorra') temp2=r ...
- Maven:将Jar安装到本地仓库和Jar上传到私服
1.依赖如下: <dependency> <groupId>org.quartz-scheduler.internal</groupId> <artifact ...
- web前端基础知识-(二)CSS基本操作
1. 概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style ...
- Spring系列之bean的使用
一.Bean的定义 <bean id="userDao" class="com.dev.spring.simple.MemoryUserDao"/> ...
- 直接拿来用,最火的.NET开源项目
综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管理( ...
- todoList使用教程
网页链接:http://www.cnblogs.com/sunada2005/articles/2663030.html
- System.Properties和System.getenv区别
网上很多使用的是getProperties.说获得系统变量,但是其实不正确.getProperties中所谓的"system properties"其实是指"java s ...
- .net core 跨平台实践
本人采用Ubuntu 14.04 来实现.net core 的跨平台实践. 首先安装Ubuntu14.04系统.安装细节问百度. 1..net core console程序的跨平台 首先新建一个con ...
- cf723b Text Document Analysis
Modern text editors usually show some information regarding the document being edited. For example, ...