4.1 अद्यतन:
एक अद्यतन के रूप में ... 4.1 में वहाँ अब एक स्थिर विधि setFields
जो मॉडल प्रोटोटाइप क्षेत्रों को परिभाषित करने के लिए किया जा सकता है। यह एक नियंत्रक की init विधि में अच्छी तरह से काम करता है।
जब मैंने ऐसा किया, तो मैं मॉडल वर्ग में परिभाषित कुछ स्थैतिक फ़ील्ड रखना चाहता था और फिर कुछ और गतिशील रूप से सेट करना चाहता था। दुर्भाग्यवश नया setFields
विधि तर्क के साथ सभी फ़ील्ड को प्रतिस्थापित करता है, हालांकि इसे संभालने में काफी आसान था।
यह उदाहरण MVC पैटर्न जहाँ मेरे मॉडल और दुकान में शामिल किए गए हैं का उपयोग करता है नियंत्रक के model
सरणी और store
सरणी (मुझे काम से नीचे का इस्तेमाल किया ही टिककर खेल के साथ प्रदान):
Ext.define('ST.controller.Main', {
extend: 'Ext.app.Controller',
models: ['User', 'Reference'],
stores: ['CurrentUser', 'PermissionRef'],
views: ['MainPanel'],
init: function() {
var me = this;
me.getPermissionRefStore().on('load', function(store, records) {
var model = me.getUserModel();
// this returns the static fields already defined
// in my User model class
fields = model.prototype.fields.getRange();
// add the permission options (dynamic fields) to the static fields
Ext.each(records, function(permission) {
fields.push({name: permission.get('name'), type: 'bool'});
});
// 4.1 method to update the User model fields
model.setFields(fields);
// now load the current user (it will use the updated model)
me.getCurrentUserStore().load();
});
}
});
User
मॉडल और CurrentUser
दुकान कर रहे हैं नियमित रूप से, गैर गतिशील मॉडल और दुकानों की तरह बनाया गया है और उनके संबंधित नियंत्रक सरणी में शामिल किया जाएगा, 'उपयोगकर्ता' मॉडल बस ऊपर दिखाए गए गतिशील फ़ील्ड को याद कर रहा है।
अद्यतन – Jom
अपडेट जोड़ने के लिए धन्यवाद आप नए फ़ील्ड सीधे 'फ़ील्ड्स' मिश्रित कोलेक्शन' में क्यों नहीं जोड़ते? क्या 'सेटफिल्ड्स' विधि द्वारा कोई आवश्यक प्रसंस्करण किया गया है? मेरा मतलब है कि आपके मामले में 'फ़ील्ड 'उदाहरण बनाने के बगल में। – rixo