I need to define some functions which i can call everywhere in my app. What is the best approach to achieve this?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Personally, to keep it as EXT-MVC as possible, I have a Utilities class full of static methods. This can be required like any other class to maintain proper dependency relations. This also ensures that the methods are run in an EXT environment, so all of EXT is available.
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:
An alternative way other than @David Kanarek's statics approach is to define a singleton. Codes:
Ext.define('MyApp.Utilities2', {
singleton: true,
global_var2: 'Hello World',
foo2: function (a, b) {
return a + b;
},
});
I've created a fiddle here: https://fiddle.sencha.com/#fiddle/qu1
The difference between the statics and singleton approach is that
- MyApp.Utilities2 (singleton approach) is an object,
- MyApp.Utilities (statics approach) is a class.
So It's up to you whether to reference the class itself or to reference one instance of that class for convenience.