मुझे "सुपर" विधि को ओवरराइड करने में समस्या होने तक मैं Privman के उत्तर के करीब पसंद कर रहा था। initialize()
को बैकबोन ऑब्जेक्ट के निर्माण के माध्यम से किसी भी तरह से नहीं कहा जाता है, ओवरराइडिंग उस समय तक नहीं हो सकता है जब इसे आवश्यकता होती है (यदि इसे initialize()
से पहले जाना जाता है)।
विशेष रूप से, यह parse()
के साथ एक समस्या हो सकती है।
MyModel = Backbone.Model.extend({
initialize: function (options) {
this.parse = function (response, xhr) {
// parsing logic
};
// public & private vars/methods here
// and also initialize code
}
});
MySubModel = MyModel.extend({
initialize: function (options) {
this.parse = function (response, xhr) {
// override MyModel with my own parsing logic
}
// public & private vars/methods here
// and initialize code here
}
});
MySubModel.parse()
कहा जा कभी नहीं होगा: (। दृश्य के लिए नहीं एक मुद्दा है, लेकिन निश्चित रूप से संग्रह और मॉडल के लिए) इस स्थापना को देखते हुए।
इसके बजाय, मैंने पाया कि एक IIFE का उपयोग कर इनिशियलाइज़ के बजाय() दोनों इस समस्या को साफ करता है और एक समारोह पहले से ही एक निर्दिष्ट उद्देश्य (initialize()
) है कि बनाने की तुलना में क्लीनर पढ़ता बाकी को परिभाषित करने के लिए एक बंद रूप में दोहरा काम करना कक्षा का
var MyModel = {};
(function() {
this.initialize = function (attributes, options) {
// initialize me
}
this.parse = function (response, xhr) {
// override at will
}
// other public & private vars/methods here
}).call(MyModel);
Backbone.Model.extend(MyModel);
दुर्भाग्य से, यह "निजी" चर वर्ग के सभी उदाहरणों भर में साझा किया जा रहा के रूप में दोनों gilly3 और पास Privman के जवाब कर के साथ एक ही समस्या है। निजी चर संभव बनाने के लिए एक अजीब तरीका सुनना अच्छा लगेगा, लेकिन शायद मुझे इसे अवश्य देना चाहिए और पहचानना चाहिए कि मैं अब जावास्क्रिप्ट लिख रहा हूं, जावा/एएस 3/सी ++ नहीं।
आप क्यों तुम समझा सकते हैं ऐसा करने की कोशिश कर रहे हैं? वास्तव में एक सीधा आगे समाधान नहीं है। – Gazler
एपर्ट को समझाने के लिए बहुत कुछ नहीं है कि मैं एक दृश्य में एक निजी संपत्ति कैसे जोड़ सकता हूं। उदाहरण var myPrivate = "निजी संपत्ति" लेकिन यह पूरे दृश्य के लिए उपलब्ध होना चाहिए जैसा कि यह है। मेरा सार्वजनिक है। इसे छोड़कर। MyPublic को दृश्य उदाहरण से एक्सेस किया जा सकता है। myPrivate केवल दृश्य विधियों के भीतर से ही उपयोग किया जा सकता है – Chapsterj
यह उत्तर देखें: http: // stackoverflow।कॉम/प्रश्न/8924 9 61/निजी-जैसी-गुण-इन-मॉडलों-या-विचार-ऑफ-बैकबोन-जेएस –