javascript - एक्स्टजेएस 4 एमवीसी में मुझे वैश्विक कार्यों को कहां परिभाषित करना चाहिए?




extjs model-view-controller (2)

मुझे कुछ कार्यों को परिभाषित करने की ज़रूरत है जिन्हें मैं अपने ऐप में हर जगह कॉल कर सकता हूं। इसे प्राप्त करने का सबसे अच्छा तरीका क्या है?


@ डेविड कानारेक की सांख्यिकी दृष्टिकोण के अलावा एक वैकल्पिक तरीका एक सिंगलटन को परिभाषित करना है। कोड:

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 (statics दृष्टिकोण) एक वर्ग है।

तो यह आपके ऊपर है कि वर्ग को संदर्भित करना है या सुविधा के लिए उस वर्ग के एक उदाहरण का संदर्भ देना है।


व्यक्तिगत रूप से, इसे यथासंभव EXT-MVC के रूप में रखने के लिए, मेरे पास स्थिर विधियों से भरा उपयोगिता वर्ग है। उचित निर्भरता संबंध बनाए रखने के लिए इसे किसी अन्य वर्ग की तरह आवश्यक हो सकता है। यह यह भी सुनिश्चित करता है कि विधियां एक 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);
    }
});






model-view-controller