我应该在ExtJS 4 MVC中定义全局函数?

Jul*_*ann 25 javascript model-view-controller extjs

我需要定义一些我可以在我的应用程序中随处调用的函数.实现这一目标的最佳方法是什么?

Dav*_*rek 48

就个人而言,为了尽可能保持EXT-MVC,我有一个充满静态方法的Utilities类.这可以像任何其他类一样保持适当的依赖关系.这也确保了方法在EXT环境中运行,因此所有EXT都可用.

Ext.define('MyApp.Utilities', {
    statics: {
        foo: function (a, b) {
            return a + b;
        }
    }
});

Ext.define('MyApp.MyView', {
    extends: 'Ext.panel.Panel',
    requires: ['MyApp.Utilities'],

    initComponent: function () {
        MyApp.Utilities.foo(1, 2);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • `Utilities.foo`调用不应该是`MyApp.Utilities.foo`吗? (2认同)

gm2*_*008 7

除了@David Kanarek的静态方法之外的另一种方法是定义单例.代码:

Ext.define('MyApp.Utilities2', {
    singleton: true,
    global_var2: 'Hello World',
    foo2: function (a, b) {
        return a + b;
    },
});
Run Code Online (Sandbox Code Playgroud)

我在这里创建了一个小提琴:https: //fiddle.sencha.com/#fiddle/qu1

静力学和单身方法之间的区别在于

  • MyApp.Utilities2(单例方法)是一个对象,
  • MyApp.Utilities(静态方法)是一个类.

因此,无论是为了方便还是引用类本身或引用该类的一个实例,都取决于您.