web-dev-qa-db-ja.com

ExtJS 4 MVCのグローバル関数はどこで定義すればよいですか?

アプリのどこからでも呼び出すことができるいくつかの関数を定義する必要があります。これを達成するための最良のアプローチは何ですか?

25
Julian Hollmann

個人的には、可能な限り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);
    }
});
48
David Kanarek

@David Kanarekの静的アプローチ以外の別の方法は、シングルトンを定義することです。コード:

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

ここでフィドルを作成しました: https://fiddle.sencha.com/#fiddle/qu1

静力学とシングルトンアプローチの違いは、

  • MyApp.Utilities2(シングルトンアプローチ)はオブジェクトであり、
  • MyApp.Utilities(静的アプローチ)はクラスです。

したがって、便宜上、クラス自体を参照するか、そのクラスの1つのインスタンスを参照するかはあなた次第です。

7
gm2008