Мне нужно определить некоторые функции, которые я могу назвать везде в своем приложении. Каков наилучший подход для достижения этого?
Где я должен определять глобальные функции в ExtJS 4 MVC?
Ответ 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(статический подход) - это класс.
Итак, вам нужно ли ссылаться на сам класс или ссылаться на один экземпляр этого класса для удобства.