2012-02-13 14 views
23

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

उत्तर

47

व्यक्तिगत रूप से, इसे यथासंभव 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); 
    } 
}); 
+0

क्या आप अपने विचार का कुछ छोटा उदाहरण प्रदान कर सकते हैं? –

+0

मैंने अपने उत्तर में कुछ कोड जोड़ा है, अगर यह मदद करता है तो मुझे बताएं। –

+2

'Utilities.foo' कॉल' MyApp.Utilities.foo' नहीं होना चाहिए? – JohnnyHK

4

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

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

संबंधित मुद्दे