javascript - Ext 4.1 - 如何获取对使用 Ext.define() 创建的类的引用

标签 javascript extjs

我有一个使用如下方法创建的类:

Ext.define('MY.class.Manager', {
    ....
    ....
    ....
    manageStuff: function(){


    }
}

最初,我只需要在一个地方使用 manageStuff 函数,所以一切都很好。不过现在,我添加了另一个类,并且需要能够从新类中调用 manageStuff 函数。

我尝试在新类(class)中获取引用:

var ManagerClass = Ext.getClass('MY.class.Manager');

还有:

var ManagerClass = Ext.getClass('class.Manager');

两者都返回null

为了确保在尝试获取 Manager 类之前已定义它,我放入了打印语句:

它们读作:

...making manager class
...getting manager class

寻求任何帮助,因为我确信我解决这个问题的方法从一开始就不正确。

最佳答案

要在不相关的类之间共享行为特征,请使用 mixins:

Ext.define('MyApp.mixin.Foo', {
    foo: function(bar, baz) {
        alert(bar + ' ' + baz);
    }
});

Ext.define('MyApp.class.Foo', {
    mixins: [
        'MyApp.mixin.Foo'
    ],

    methodThatCallsFoo: function(bar, baz) {
        this.foo(bar, baz); // foo method has been mixed in the
    }
});

这适用于 Ext JS 4.x+;请记住,在 Ext JS 5 中,此机制变得更加强大,请参阅 Ext.Mixin doc .

关于javascript - Ext 4.1 - 如何获取对使用 Ext.define() 创建的类的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24996498/

相关文章:

javascript - 如何查看 ExtJs 类中方法的完整列表

extjs - 在 Extjs 中使用 Id 和 itemId 访问组件

json - 如何配置ExtJS 4 Store(代理和阅读器)以读取元数据

Javascript 在字符串中查找字母对,为什么我的测试不起作用?

javascript - 如何在 v-for 循环中仅打印第一个获胜者?

javascript - AngularJS:暂时禁用数据绑定(bind)。

javascript - 如何在 jQuery 中查找元素值

javascript - 动态加载的JavaScript可以卸载吗?

用于管理视口(viewport)布局的 Javascript 库

javascript - 过滤存储记录中的数组