Подтвердить что ты не робот

Где я должен определять глобальные функции в ExtJS 4 MVC?

Мне нужно определить некоторые функции, которые я могу назвать везде в своем приложении. Каков наилучший подход для достижения этого?

4b9b3361

Ответ 1

Лично, чтобы как можно скорее 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);
    }
});

Ответ 2

Альтернативный способ, отличный от статического подхода @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 (singleton approach) - это объект,
  • MyApp.Utilities(статический подход) - это класс.

Итак, вам нужно ли ссылаться на сам класс или ссылаться на один экземпляр этого класса для удобства.