开发ExtJS应用组件之间引用是个一个比较麻烦的事情。比如在一个FormPanel的底部工具条的某个按钮的事件处理函数中引用form的某个field基本上有两方法:
- 为每个field赋予一个ID,然后用Ext.getCmp(ID)
- 从用findParentByType找到FormPanel然后再用get()根据field出现的顺序去找form field
方法1虽然很简单,很容易实现,但这样的form不能复用。方法2比较麻烦,而且如果form的layout改变了或者有新的字段,那么引用代码需要重写。
针对这种情况,ExtJS推出了ref配置属性,凡是component都可以使用该属性在它的归属容器及归属容器的父节点中注入一个对该属性的引用名称。有了该引用名,和该组件有共同父节点的组件就可以比较方便的引用该组件。
以下示例摘自ExtJS官方文档:
var myGrid = new Ext.grid.EditorGridPanel({
title: 'My EditorGridPanel',
store: myStore,
colModel: myColModel,
tbar: [{
text: 'Save',
handler: saveChanges,
disabled: true,
ref: '../saveButton'
}],
listeners: {
afteredit: function() {
// The button reference is in the GridPanel
myGrid.saveButton.enable();
}
}
});
这个例子中定义了一个可编辑的网格面板,该面板的afteredit事件处理程序需要引用顶部工具栏上的“Save"按钮。如果不用ref配置属性来解决引用问题的话,根据上文提到的两个方法,要么给Save按钮一个唯一标识,然后再afteredit事件处理函数中用Ext.getCmp()获得对该按钮的引用,要么用以下代码:
var myGrid = new Ext.grid.EditorGridPanel({
title: 'My EditorGridPanel',
store: myStore,
colModel: myColModel,
tbar: [{
text: 'Save',
handler: saveChanges,
disabled: true,
ref: '../saveButton'
}],
listeners: {
afteredit: function() {
// The button reference is in the GridPanel
myGrid.getTopToolbar().get(0).enable();
}
}
});
这个方法不太理想,当layout发生变化时需要修改get()的索引。比如在Save按钮前加入一个分隔符,那么get(0)需要改成get(1):
var myGrid = new Ext.grid.EditorGridPanel({
title: 'My EditorGridPanel',
store: myStore,
colModel: myColModel,
tbar: [ '-', {
text: 'Save',
handler: saveChanges,
disabled: true,
ref: '../saveButton'
}],
listeners: {
afteredit: function() {
// The button reference is in the GridPanel
myGrid.getTopToolbar().get(1).enable();
}
}
});
Ext3.x的ref是个不错的东东,可以省了不少getCmp(),但它的文档太少,有个问题需注意:
ref:’../'表示定义为当前父组件的父组件的子件,例如:
var grid = new Ext.grid.GridPanel{
....
tbar: [{
xtype: 'xxxx',
ref: '../xxxx’
}]
}
则可用grid.xxxx来取xxxx组件并操作,而不是取grid.tbar.xxxx;
如果把ref定义改为 ref: ‘xxxx’,则要用grid.tbar.xxxx来操作;
ref相当于定义了一个路径.
另外items相当于一个数组,不是组件,例如:
var form=new Ext.form.FormPanel{
....
items: [{
xtype: 'xxxx',
ref: 'xxxx’
}]
}
这里则可用form.xxxx取xxxx组件…
分享到:
相关推荐
ExtJS资料笔记(extjs各个属性的详解) ExtJS资料笔记(extjs各个属性的详解) ExtJS资料笔记(extjs各个属性的详解)
Extjs是一个用于构建Web应用程序的JavaScript框架,它提供了丰富的UI组件、数据处理功能以及与服务器端交互的能力,使得开发人员能够轻松地创建复杂的用户界面。下面,我们将详细解析在给定的文件描述中提到的一些...
多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用多版本整合ExtJs应用。
学习和理解这些属性对于EXTJS开发者来说至关重要,能够帮助他们创建符合业务需求且用户体验良好的Web应用。通过熟练掌握EXTJS的各种属性,开发者能够更好地定制UI,提高应用程序的互动性和实用性。
extjs 做的桌面应用程序界面,只是前台的界面, 没有后台代码
EXTJS是一种基于JavaScript的前端开发框架,用于构建富互联网应用程序(RIA)。EXTJS的应用主要体现在其强大的组件模型、丰富的用户界面以及高效的数据显示上。EXTJS提供了大量的预定义组件,如表格、面板、菜单、...
Extjs+WEB+应用程序开发指南 Extjs+WEB+应用程序开发指南 Extjs+WEB+应用程序开发指南
EXTJS是一种基于JavaScript的前端开发框架,用于构建富互联网应用程序(Rich Internet Applications,RIA)。它提供了丰富的组件库,包括表格、窗体、菜单、工具栏等,使得开发者能够创建出功能强大、界面友好的Web...
在"开始ExtJs梦想之旅"的第二讲中,你将具体学习如何使用ExtJS创建第一个应用,从创建基本的窗口(Window)和面板(Panel),到添加控件并实现简单的交互。这一过程中,你将实践如何编写JavaScript代码来实例化组件...
ExtJS是一种基于JavaScript的开源富客户端框架,专用于构建功能丰富的、交互式的Web应用程序。它提供了大量的组件和API,能够创建具有桌面应用级别的用户界面,包括数据网格、表格、图表、菜单、工具栏等。ExtJS的...
ExtJS是一款强大的JavaScript框架,主要用于构建富客户端的Web应用程序。它提供了一系列丰富的用户界面组件,如表格、面板、按钮、菜单、表单等,使得开发者能够创建出具有桌面级用户体验的网页应用。本示例主要关注...
尽管给定的部分内容主要涉及的是一个重复的链接到一个Java学习社区,并没有直接提供关于ExtJS的任何信息,但是基于标题“ExtJS Web应用程序开发指南(第2版).pdf高清下载”和描述,我们可以围绕ExtJS框架进行深入...
《Extjs Web应用程序开发指南》是一本专注于使用Extjs框架进行Web应用开发的专业书籍,而提供的压缩包文件包含了书中各个章节的源代码示例。这些示例代码是学习Extjs框架的重要参考资料,可以帮助读者深入理解Extjs...
Extjs应用案例: 本酒店管理系统采用三层架构,SQL Server数据库。最主要的是采用了Extjs框架。 酒店系统实现了部分功能。aspx后台页面几乎无代码。业务逻辑处理全部采用Extjs自带的函数。对于学习Extjs的框架的...
经过不断发展与改进,ExtJS现在已经成功发布了4.0版本,并且成为构建RIA Web应用的一套最完整、最成熟的JavaScript基础库。利用ExtJS构建的RIA Web应用具有与桌面程序一样的标准用户界面和操作方式,并且能够跨不同...
ExtJS4 已完全重新写 grid 组件,tree 也被更新,所以从版本 3 到 4 大部分的属性改变了。 在 ExtJS4 中,API 也发生了很大的变化,包括 tree、tab panel、grid、window、form、chart、data stores、border layout ...
Extjs写的一个桌面应用,从登录开始,功能齐全
卫军、夏慧军、孟腊春编著的《ExtJS Web应用程序开发指南(第2版)》共18章和1个附录,是对第1版的全面升级,增补了大量ExtJS 4.0中的新特性。从基本的ExtJS功能开始讲解RIA Web开发,从而引出用户体验丰富的ExtJS...