将属性作为extjs中类实例的引用

时间:2014-01-19 14:07:12

标签: javascript extjs4.2 extjs-mvc

我想创建一个只有一个实例(单例)的实用程序类,因此我创建了一个名为 getInstance()的静态方法,它将创建一个实例并将其返回给我。

我在代码下方发布了一条评论,其中包含错误和错误说明。 请告诉我代码的错误。

任何帮助表示感谢。

Ext.define('MyApp.utility.EventManager',{
    extend:'Ext.util.Observable',
    instance: new MyApp.utility.EventManager(), //error as undefined EventManager property  
    statics:{
          // instance: new MyApp.utility.EventManager(),
        getInstance:function(){
            if(!this.self.instance){
                this.self.instance=Ext.create('MyApp.utility.EventManager');
                return this.self.instance;
            }
            else{
                return this.self.instance;
            }
        },

    },

    constructor:function(){
        this.addEvents(
            'success'
        );
    },

});

1 个答案:

答案 0 :(得分:1)

很明显,当您在类的定义中使用它时,您会在new MyApp.utility.EventManager()中收到错误。在您define该课程时,它尚不存在,因此您无法使用new对其进行实例化。

解决方案很简单,因为单例类已经是Ext框架的一个特性。使用内置的singleton-config定义您的课程。

Ext.define('MyApp.utility.EventManager',{
    extend:'Ext.util.Observable',
    singleton: true,   
    constructor:function(){
        this.addEvents(
            'success'
        );
    },
});

您不需要getInstance方法,因为对象MyApp.utility.EventManager始终是实例化的单例。