तरहBackbone.js - कस्टम setters
window.model= Backbone.Model.extend({
defaults:{
name: "",
date: new Date().valueOf()
}
})
मैं एक तरह से हमेशा मॉडल दुकान लोअर केस में नाम इनपुट पर ध्यान दिए बिना प्रदान की बनाने के लिए खोजने की कोशिश कर रहा हूँ एक सरल रीढ़ मॉडल की कल्पना करें। यानी,
model.set({name: "AbCd"})
model.get("name") // prints "AbCd" = current behavior
model.get("name") // print "abcd" = required behavior
ऐसा करने का सबसे अच्छा तरीका क्या है?
- अवहेलना "सेट" विधि
- उपयोग एक "SantizedModel" जो इस बेस मॉडल पर परिवर्तनों को सुनता और स्वच्छ आदानों संग्रहीत करता है: यहाँ सब मैं के बारे में सोच सकता है। इसके बाद सभी व्यू कोड को इस स्वच्छता मॉडल को पारित किया जाएगा।
विशिष्ट उदाहरण मैं तकनीकी रूप से बेहतर देखने के द्वारा नियंत्रित किया जा सकता है उल्लेख किया "लोअर केस करने के लिए", जबकि यह पुन: प्राप्त करने, लेकिन एक अलग मामले की कल्पना जहां, कहते हैं, उपयोगकर्ता पाउंड में मूल्यों में प्रवेश करती है और मैं केवल में मान संग्रहीत करना चाहते हैं मेरे डेटाबेस में $ s। एक ही मॉडल के लिए अलग-अलग विचार भी हो सकते हैं और मैं हर जगह इसका उपयोग करने के लिए "toLowerCase" नहीं करना चाहता हूं।
विचार?
धन्यवाद। मैंने यह भी माना, लेकिन यह इसे पठनीय बनाने के मामले में पिछड़ा हुआ लग रहा था - सेट फ़ंक्शन को ओवरराइड करना या एक नया "सेटप्रोपर्टी" फ़ंक्शन जोड़ना जो इसे लोअरकेस में सेट करता है और फिर इसे रीढ़ की हड्डी में सेट करता है बेहतर हो सकता है। जब तक मैं कुछ याद नहीं कर रहा हूँ? – Naren
निश्चित रूप से कुछ करने के लिए 'सेट' विधि को ओवरराइड करने में कुछ भी गलत नहीं है जो आपको करने की आवश्यकता है ... सेट से पहले कुछ प्री-प्रोसेसिंग? यदि आप मेल खाते हैं तो कुछ प्री-प्रोसेसर को कॉल करने के लिए आप 'Backbone.Model.prototype.set' को विस्तारित करने पर भी विचार कर सकते हैं ... इस तरह कुछ: https://gist.github.com/1310972 –
मान्य केवल सहेजने के लिए कहा जाता है या अगर options.validate = सत्य सेट है। (चुप का उपयोग यहां नहीं किया जाता है, लेकिन जवाब काफी पुराना है) – webstrap