如何实现ext事件的重写呢?
很自然的,我们肯定是想到要去这样做:先继承一个已有的类,然后在extend的时候,重写我们需要的方法。这样做很好,很有OOP的风格。(请参考
http://itren.iteye.com/admin/blogs/255563)但这样做似乎略有繁琐。有没有更好的方式呢?of course!
我们可以用到prototype方式来完成,同时不必再继承一个类了。譬如说,我们有一棵树,我们为叶子节点绑定了双击事件,但我们想要重写该树叶子节点的双击方法则需要添加一些代码了。
首先,这里有一棵普通的绑定了双击事件的树。
Ext.onReady(function(){
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
el:'tree-div',
useArrows:true,
autoScroll:true,
animate:true,
enableDD:true,
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl: 'get-nodes.php'
})
});
// 设置根节点
var root = new Tree.AsyncTreeNode({
text: 'Ext JS',
draggable:false,
id:'source'
});
/**
绑定该事件,双击树节点时弹出“哈哈”
*/
root.on("dblclick", function(){
alert("哈哈")
})
tree.setRootNode(root);
tree.render();
root.expand();
});
在这棵树中,我们双击叶子节点,会弹出“哈哈”的警告框。如果要修改该双击事件的方法。则应该如下:
Ext.tree.TreeNodeUI.prototype.onDblClick = function(e){
/**
重写该方法,每双击一个节点树时弹出一个消息框
*/
alert('Ext.tree.TreeNodeUI.prototype.onDblClick');
e.preventDefault();
if(this.disabled){
return;
}
if(this.checkbox){
this.toggleCheck();
}
if(!this.animating && this.node.hasChildNodes()){
this.node.toggle();
}
this.fireEvent("dblclick", this.node, e);
}
Ext.onReady(function(){
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
el:'tree-div',
useArrows:true,
autoScroll:true,
animate:true,
enableDD:true,
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl: 'get-nodes.php'
})
});
// 设置根节点
var root = new Tree.AsyncTreeNode({
text: 'Ext JS',
draggable:false,
id:'source'
});
/**
绑定该事件,双击树节点时弹出“哈哈”
*/
root.on("dblclick", function(){
alert("哈哈")
})
tree.setRootNode(root);
tree.render();
root.expand();
});
其中Ext.tree.TreeNodeUI 代表树中的一个节点,其实例负责和用户交互,我们重写它的onDblClick方法即完成了事件的重写。
分享到:
相关推荐
在实际开发中,`ext_extends`可能会包含多个示例,展示了不同类型的继承和重写场景,比如控件的定制、事件处理、数据绑定等。这些实例可以帮助开发者深入理解EXT JS的继承机制,并熟练运用到实际项目中,提高代码的...
Ext.js 重写 numberfield 千分位,我的版本是ext.net2.4
EXT dojochina Ext方法重写是一个关于EXT.js框架中函数重写的专题。EXT.js是一个流行的JavaScript库,用于构建富客户端应用,它提供了丰富的组件、布局管理和数据绑定机制。在EXT.js中,方法重写是一种常见的实践,...
在这个场景中,我们将深入探讨如何在Ext JS中重写Panel并为其添加click事件。 首先,理解Panel的基本结构是至关重要的。一个Panel由多个部分组成,包括头部(header)、主体(body)和脚部(footer)。我们可以通过...
在这个主题"Ext一些方法的重写"中,我们将深入探讨如何在`Ext`库中重写方法,以满足特定的需求或优化性能。 `Ext.extend()` 是`Ext`库中的一个核心函数,它用于创建类的继承链。在JavaScript这种没有类的语言中,`...
`Ext.ux.form.ColorPickerFieldPlus` 是一个由老外开发者重写的色彩选择器组件,它扩展了原生的Ext JS库中的`ColorPickerField`控件,为用户提供更加丰富的色彩选取体验。这个组件的目的是为了实现更自由、更接近...
- **获取 DOM 节点**:通过 `Ext.get` 或 `Ext.select` 方法可以轻松获取页面中的 DOM 元素。 - **响应事件**:使用 `addListener` 方法为元素绑定事件处理器,例如点击事件。 - **使用 Widgets**:Ext 提供了多种...
在IT行业中,EXT4是一种广泛使用的文件系统,尤其在Linux操作系统中。它的全称是Fourth Extended File System,是EXT3的升级版,旨在提供更好的性能、稳定性和更大的存储容量。EXT4引入了许多新特性,例如预分配、...
在ExtJS中,可以通过重写`Ext.data.Store.prototype.applySort`方法来实现中文排序。具体步骤如下: 1. **检查排序信息**:首先判断当前Store是否设置了排序信息,并且不是远程排序。 2. **获取字段信息**:从排序...
EXT JS采用了面向对象的编程模式,支持类的继承和重写。这允许开发者在不修改原始代码的情况下,扩展和定制现有组件的功能。 **十八、补充资料与概述** 除了上述内容,EXT JS还提供了丰富的文档和社区资源,包括...
在IT领域,特别是前端开发中,`Ext JS`是一个广泛使用的JavaScript库,它提供了一整套组件和工具,用于构建富交互式的Web应用程序。`TreePanel`是`Ext JS`中的一个关键组件,用于展示层次结构的数据,就像操作系统中...
为了解决这个问题,我们可以重写Ext.data.Store的`applySort`函数,以便在进行本地排序时应用中文排序规则。上述代码正是这样一个解决方案。它将原生的`applySort`函数替换为一个新的版本,其中包含了对中文字符串...
4. **事件处理**:监听用户选择年份的事件,当用户选择新的年份时,触发相应的回调函数,以便在应用中处理年份改变。 5. **样式调整**:为了提供良好的用户体验,可能需要调整控件的样式,使其更符合年度选择的场景...
10. **事件队列**:在Ext中,事件队列是一种处理异步操作的方式,它确保了事件按照一定的顺序进行处理。事件监听者注册后,当触发事件时,事件会被加入到队列并按顺序执行。 了解并掌握这些Ext的面向对象特性,有助...
为了解决上述问题,可以通过重写`Ext.data.Store`原型中的`applySort`方法来实现对中文数据的正确排序。具体实现如下: ```javascript Ext.data.Store.prototype.applySort = function() { if (this.sortInfo && !...
目的:该示例非常详细注释说明Ext的面向对象的编程方式,使用继承,然后重写父类的方法,以及注册自定义事件说明Ext框架是事件驱动的框架编程。 阅读对象:本中心学习Ext面向对象编程的人员 阅读条件:掌握OO的思路...
在EXT JS 3.2.1版本中,Grid组件是一个非常强大的数据展示工具,它可以用于显示大量的结构化数据,并提供丰富的交互功能。标题"ext超酷的grid中放图片(ext3.2.1)"暗示了我们将探讨如何在EXT JS的Grid组件中嵌入和...
文档中介绍了如何在EXT中使用继承,包括定义基类、派生类,以及如何重写父类的方法和属性。 #### 11. 模板(Templates)起步 模板是用于生成动态HTML的有效工具,它允许开发者在HTML标记中嵌入变量和逻辑表达式。在...
19 重写公共变量 21 重写(Overriding)公共函数 21 DomQuery基础 22 DomQuery基础 22 扩展EXT组件 29 文件的创建 30 Let's go 33 完成 35 EXT的布局(Layout) 37 简单的例子 38...