मैं एक मॉडल को उपclass करना चाहता हूं जिसे मैंने सेन्चा आर्किटेक्ट का उपयोग करके बनाया है। मान लें कि मेरे पास बेसमोडेल नामक एक मॉडल है जिसे मैंने पहले ही बनाया है, और मुझे एक और मॉडल बनाने की ज़रूरत है, इसे माईमोडेल कहते हैं, जो बेसमोडेल को बढ़ाता है। ExtJS और Sencha वास्तुकार कोसेन्चा आर्किटेक्ट: मॉडल को उपclassing
// BaseModel.js
Ext.define('MyApp.model.BaseModel', {
extend: 'Ext.data.Model',
fields: [...]
});
और
// MyModel.js
Ext.define('MyApp.model.MyModel', {
extend: 'MyApp.model.BaseModel',
fields: [...]
});
मैं नया लेकिन यह कुछ ऐसा है जो उचित के लिए इतना महत्वपूर्ण कोड में करते हैं और करने के लिए इतना आसान है: कोड में, यह कुछ इस तरह दिखेगा सॉफ़्टवेयर डिज़ाइन जो मुझे लगता है कि आर्किटेक्ट में ऐसा करने का एक तरीका होना चाहिए। दुर्भाग्य से मैं यह नहीं समझ सका कि इसे आसानी से कैसे किया जाए। कुछ खुदाई के बाद मुझे Sencha डॉक्स में इस पाया, http://docs.sencha.com/architect/2/#!/guide/classes है, जो शीर्षक "कस्टम वर्ग" के अंतर्गत निम्नलिखित राज्यों:
जबकि यहाँ वर्णित सुविधाओं टूलबॉक्स में समर्थित मदों से कक्षाओं के निर्माण को सक्षम, कभी कभी आपको एक सादे अभिभावक वर्ग या कक्षा बनाने की आवश्यकता हो सकती है जो कि किसी अन्य वर्ग को विस्तारित करता है जो टूलबॉक्स में प्रकट नहीं होता है। आप टूलबॉक्स में कक्षा आइटम का उपयोग कर आर्किटेक्ट में ऐसा कर सकते हैं।
ठीक है, वादा करता है - इसलिए मैंने कोशिश की। प्रोजेक्ट इंस्पेक्टर में मैंने प्लस साइन मारा, "कक्षा" में गया, और उस हिट "मॉडल" के भीतर। तो अब मेरे पास मेरी परियोजना में एक कस्टम मॉडल क्लास है। मैं इसे MyModel
कहता हूं और मैंने MyApp.model.BaseModel
होने के लिए "विस्तार" कॉन्फ़िगरेशन सेट किया है। तो अब कम से कम कोड सही है और मेरे ऊपर जैसा दिखता है। हालांकि, आर्किटेक्ट को यह नहीं पता है कि MyModel
कक्षा एक मॉडल है, भले ही यह मेरे प्रोजेक्ट इंस्पेक्टर के "मॉडल" खंड में बैठी हो और BaseModel
तक फैली हुई हो। इसमें मॉडल फ़ील्ड गुणों में से कोई भी नहीं है जैसे "फ़ील्ड" जिन्हें मुझे निर्दिष्ट करने की आवश्यकता है, और मैं किसी भी प्रकार के स्टोर के साथ MyModel
को संबद्ध नहीं कर सकता। दूसरे शब्दों में, आर्किटेक्ट MyModel
को पूरी तरह से कस्टम क्लास के रूप में मानता है और किसी भी मॉडल व्यवहार का पर्दाफाश नहीं करता है। यह मूल रूप से पूरी तरह बेकार subclassing के इस तरीके बनाता है - मैं एक मॉडल subclass कर सकते हैं, लेकिन फिर मैं इसे अपने प्रोजेक्ट में कहीं भी एक मॉडल के रूप में उपयोग नहीं कर सकता, तो बात क्या है?
तो सवाल यह है कि मैं MyModel
को वास्तविक मॉडल के रूप में कैसे इलाज कर सकता हूं? क्या आर्किटेक्ट में उप-वर्ग का सही तरीका नहीं है? मैं बस अपनी परियोजना शुरू कर रहा हूं, लेकिन मुझे लगता है कि यह अक्सर मॉडल, नियंत्रक, स्टोर इत्यादि के उप-वर्ग की आवश्यकता है और यदि मैं आर्किटेक्ट के साथ ऐसा नहीं कर सकता तो यह एक गंभीर सीमा है।
यह कैसे हल किया गया ?? –