`
xiaoyongzeng
  • 浏览: 14966 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

有关自定义继承EXT观察者事件对象一些问题

 
阅读更多
在用EXT的过程中,有时会自定义封装一些对象,为了让这个对象有事件处理的能力,简便起见,往往会让这个对象继承Ext.util.Observable事件对象。便在使用的过程中,要注意一个问题,具体如下:

一、问题代码

          Ext.namespace("js.main");
var x = js.main;

x.Test = function(_cfg){
this.list = [];
Ext.apply(this,_cfg || {});
this.addEvents("onSuccess");

};
x.Test.prototype.write = function(_arg){
document.writeln(_arg);
};
x.Test.prototype.testA = function(){
this.write("this->list.length: "+this.list.length);

};
Ext.extend(x.Test,Ext.util.Observable);

    这段代码,初看上去,没有问题,但当实例出一个Test对象,调用testA方法时,会出现此方法没有定义的问题。
    看了其它EXT组件继承观察者事件对象才知道,问题的原因应该出现在,当自定义的对象继承observable时,已经破坏了原始Test对象的原始链,好在此种继承机制提供了一种修复的方式,如接下来所示。


二、正确代码

    Ext.namespace("js.main.Test");
var x = js.main;

x.Test = function(_cfg){
this.list = [];
Ext.apply(this,_cfg || {});
this.addEvents("onSuccess");

};
Ext.extend(x.Test,Ext.util.Observable,{
write : function(_arg){
document.writeln(_arg);
},
testA : function(){
this.write("u-------this->list.length: "+this.list.length);
this.fireEvent("onSuccess");
}
});

  
分享到:
评论

相关推荐

    Ext官方PPT,强烈推荐

    - 观察者模式是事件处理的一种实现,允许对象订阅(监听)其他对象的特定事件,并在事件发生时执行回调函数。 - `Ext.EventObservable`是所有可观察对象的基类,如组件、Store等,它们都实现了观察者模式。 - ...

    Ext official doc - class-event-observer

    1. **事件系统**:Ext的事件系统是基于观察者模式的,它允许对象之间通过事件进行通信。事件可以是用户交互(如点击按钮),也可以是程序内部状态变化(如数据加载完成)。 2. **监听和触发**:在Ext中,你可以使用...

    ext+js深入浅出

    - **Ext.EventObject**:表示事件对象,提供了关于事件的详细信息,如事件类型、目标元素等。 ##### 2.2 EXT的核心组件 **EXTJS**提供了一套丰富的UI组件库,这些组件构成了其核心框架。 - **Ext.Component**:这...

    精通JS脚本之ExtJS框架.part1.rar

    4.1 设计模式——观察者模式 4.2 自定义事件 4.3 浏览器事件 4.4 ExtJS中的事件 4.4.1 Function.call()/apply()方法 4.4.2 函数的作用域 4.4.3 Ext.lib.Event事件 4.4.4 Ext.util.Observable事件 4.4.5 Ext....

    Ext+JS深入浅出.pdf

    - **Ext.EventObject**:封装了事件对象,提供了一系列方法来处理事件。 - **核心组件**: - **Ext.Component**:所有UI组件的基础类,提供了基本的属性和方法。 - **Ext.BoxComponent**:继承自`Ext.Component`...

    精通JS脚本之ExtJS框架.part2.rar

    4.1 设计模式——观察者模式 4.2 自定义事件 4.3 浏览器事件 4.4 ExtJS中的事件 4.4.1 Function.call()/apply()方法 4.4.2 函数的作用域 4.4.3 Ext.lib.Event事件 4.4.4 Ext.util.Observable事件 4.4.5 Ext....

    手工打造Extjs (1) 类系统

    在构建类系统时,开发者可能会用到工厂模式(用于创建对象的抽象接口)、观察者模式(用于事件驱动编程)等设计模式。 10. **工具和源码分析**: 标签中的“源码”提示我们可以直接查看Extjs的源代码,学习其内部...

    ExtJS设计模式

    - **Ext.Component** 类及其子类都继承自`Ext.util.Observable`,这使得所有组件都能够作为观察者使用。 - 开发者可以通过`addEvents`、`addListener`等方法为组件添加自定义事件以及注册监听器。 - **示例代码**: ...

    中舟财富面试题Java笔试题

    10. **设计模式**:理解并能运用常见设计模式,如单例、工厂、观察者、装饰器、适配器等,它们是解决特定问题的成熟解决方案。 11. **Spring框架**:如果涉及到企业级开发,可能会考察Spring的核心特性,如依赖注入...

    (VR虚拟现实)虚拟现实技术实验指导书.pdf

    - 该类可能会继承自`MonoBehaviour`,使其可以附加到Unity3D中的游戏对象上,控制游戏对象的行为。 ### 5. 光照、材质和渲染 光照和材质是创建真实感3D环境的关键因素。文档中提到了与光照相关的几个关键字: - **...

    WINDOWS程序员使用指南(二)----MICROSOFT基本类库

    MFC基于C++的面向对象特性,遵循设计模式如单例、工厂、观察者等。它将Windows API中的窗口、消息、线程等概念转换成C++类,如CWnd(窗口类)、CMessageMap(消息映射)和CWinThread(线程类)。这种抽象使得代码...

    Java程序员进化为架构师掌握的知识

    19. **设计模式**:掌握常用设计模式的原理和应用,如工厂方法模式、观察者模式等。 20. **Java NIO**:了解Java NIO的原理和应用。 21. **并发编程包**:深入理解`java.util.concurrent`包中的类和接口,如`...

    ExtJs中简单的登录界面制作方法

    3. `XQH.ExtJs.Frame.app`是一个主应用程序类,它继承自`Ext.util.Observable`,使其具有观察者模式的特性。 4. `LoginLogo`组件被定义为一个Panel,用于显示登录界面的Logo或标题。 5. `LoginForm`组件是一个...

Global site tag (gtag.js) - Google Analytics