2012-10-27 17 views
11

से पूरी तरह से विशेषता हटाएं मैं रीढ़ की हड्डी मॉडल से पूरी तरह से एक विशेषता को हटाने की कोशिश कर रहा हूं। यह मॉडल एक एपीआई को भेजा जा रहा है जो बहुत लचीला नहीं है, और यदि मैं उन लोगों पर अतिरिक्त विशेषताओं को भेजता हूं जो मुझे भेजना है, तो यह तोड़ देगा, इसलिए मुझे एक विशेषता को हटाने की आवश्यकता है ताकि यह अब मौजूद न हो।Backbone.js मॉडल

मैंने this question से model.unset की कोशिश की, लेकिन जब मैं ऑब्जेक्ट को प्रिंट करता हूं तो विशेषता जिसे मैं निकालने का प्रयास कर रहा हूं, अभी भी शून्य के मूल्य के साथ सूचीबद्ध है।

मुझे पूरी तरह से जाने के लिए विशेषता की आवश्यकता है।

मेरे बुनियादी संरचना है:

model.unset("AttrName", "silent"); 

उत्तर

18

समस्या यह है कि आप उपयोग कर रहे है unset के लिए पैरामीटर गलत तरीके से। "मूक" options hash का हिस्सा होना चाहिए, एक अलग पैरामीटर नहीं। यह काम करता है:

model.unset("AttrName", { silent: true }); 

अजीब व्यवहार के लिए कारण annotated source से देखा जा सकता:

unset: function(attr, options) { 
    (options || (options = {})).unset = true; 
    return this.set(attr, null, options); 
}, 

unset विधि मानता है कि इसके options पैरामीटर एक वस्तु है, और प्रयास या तो बना या इसे संशोधित करें, फिर इसे set विधि पर पास कर दें। यदि आप इसके बजाय एक स्ट्रिंग पास करते हैं, तो कोड का अनजान प्रभाव इसे अनसेट करने के बजाय विशेषता को शून्य पर सेट करना है।

+0

यदि मैं विकल्प हैश के रूप में बदलता हूं जैसे कि यह एक परिवर्तन ईवेंट ट्रिगर करता है, जो कि मैं चुप विकल्प से बचने की कोशिश कर रहा हूं। – FrizbeeFanatic14

+0

@ FrizbeeFanatic14 कुछ और गलत है - यदि आप उस वाक्यविन्यास का उपयोग करते हैं, तो इसे एक बदलाव ईवेंट नहीं बढ़ाया जाना चाहिए (मैंने अभी इसका परीक्षण किया है)। – McGarnagle

+0

आप सही हैं, यह उस घटना को बुलाकर कुछ और था। धन्यवाद। – FrizbeeFanatic14

1

अवहेलना अपने मॉडल के toJSON विधि और केवल गुण आप भेजना चाहते हैं शामिल हैं।

अपडेट किया गया: (कोड नमूना जोड़ा)

जब मॉडल का विस्तार, एक toJSON समारोह जोड़ सकते हैं और वांछित विशेषताओं के साथ एक ऑब्जेक्ट:

{ 
    toJSON : function() { 
     return { 
      name: this.get('name'), 
      age: this.get('age'), 
      phoneNumber: this.get('phoneNumber') 
     }; 
    } 
} 
+0

मैं बैकबोन के लिए बहुत नया हूँ - मैं उस के बारे में कैसे वास्तव में जाना चाहते हैं? – FrizbeeFanatic14

0

तुम बस केवल गुण आप चाहते हैं के साथ एक वस्तु के निर्माण (और उस भेजने) की कोशिश कर सकते:

serializeModel: function() { 
    return { 
    email: this.$("#email").val(), 
    password: this.$("#password").val() 
    } 
}