Где я должен определить глобальные функции в ExtJS 4 MVC? - PullRequest
25 голосов
/ 13 февраля 2012

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

Ответы [ 2 ]

48 голосов
/ 14 февраля 2012

Лично, чтобы сохранить его как можно более 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);
    }
});
7 голосов
/ 23 июля 2015

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...