मुझे वास्तव में बैकबोन पसंद है, लेकिन मुझे सबसे कठिन समय लगता है जो सरल चीजें प्रतीत होता है। मैं निम्नलिखित उदाहरण के साथ किसी भी मदद की सराहना करता हूं।Backbone.js Arrays
मेरे पास एक मॉडल है, मानदंड, कि मैं अपने यूआई में कुछ वस्तुओं की स्थिति को स्टोर करने के लिए उपयोग करना चाहता हूं। कुछ सरल विशेषताएं हैं, और एक विशेषता जो यूआई में चुने गए टैग की आईडी स्टोर करने के लिए उपयोग की जाने वाली आईडी की एक सरणी है।
तो, मैं एक नया उदाहरण बना देता हूं। मैं टैग सरणी में कुछ आइटम जोड़ता हूं। फिर, मैं ताजा शुरू करना चाहता हूं, एक नया उदाहरण बनाएं, जो एक ही चर को सौंपा गया हो। लेकिन, मेरे टैग सरणी को मानदंड के पहले उदाहरण के हिस्से के रूप में इसमें शामिल जानकारी रखने के लिए जारी है।
मैंने नीचे परीक्षण केस दस्तावेज किया है।
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<script src="Scripts/Libraries/jquery-1.6.1.js" type="text/javascript"></script>
<script src="Scripts/Libraries/underscore.js" type="text/javascript"></script>
<script src="Scripts/Libraries/backbone.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(function() {
// Simple model to hold some state about my UI.
var Criteria = Backbone.Model.extend({
defaults: {
"status": "Normal",
"priority": "Normal",
"tags": new Array()
}
});
// Create new criteria.
window.criteria = new Criteria();
// The length of the tags array should be 0. PASSES
console.log("Expect 0: Actual " + window.criteria.get("tags").length);
// Add a tag id to the tags array.
window.criteria.get("tags").push(5); // Tag with ID of 5.
// The length of the tags array should be 1. PASSES
console.log("Expect 1: Actual " + window.criteria.get("tags").length);
// Create a new instance of criteria.
window.criteria = new Criteria();
// The length of the tags array should be 0. FAILS
// CONFUSED. I thought this is now a new instance with a new set of attributes.
// Why does the tags collection still have an item in it.
console.log("Expect 0: Actual " + window.criteria.get("tags").length);
// OK. So, I will call the clear method on the model. This is supposed to remove all attributes
// from the model.
// Then, I will create it again.
window.criteria.clear();
window.criteria = new Criteria();
// The length of the tags array should be 0. FAILS. Still 1.
console.log("Expect 0: Actual " + window.criteria.get("tags").length);
// ARGH!
console.log("HELP!");
});
</script>
</head>
<body>
<h1>Test</h1>
<p>Backbone test page.</p>
</body>
</html>
क्या मैं यहां चिह्न से बाहर निकल गया हूं? क्या मैं उन चीजों के लिए बैकबोन का उपयोग करने की कोशिश कर रहा हूं जिसका इरादा नहीं था? या क्या मैं जावास्क्रिप्ट ओओ प्रोग्रामिंग में कुछ और सामान्य याद कर रहा हूं?
पीएस मैंने मूल रूप से टैग के बैकबोन संग्रह का उपयोग किया, लेकिन इसने कई संग्रहों में संदर्भित टैग मॉडल से संबंधित मुद्दों का एक अलग अलग सेट प्रस्तुत किया और बैकबोन की निकासी विधि किसी संग्रह से किसी आइटम को हटाए जाने पर "संग्रह" संदर्भ को कैसे सेट करता है। एक और दिन, एक और मुद्दा।
हाय केविन, शायद आप नीचे दिए गए एक को अपना स्वीकृत उत्तर बदल सकते हैं? जो कहीं अधिक सुगम और अनुशंसित दृष्टिकोण है। स्वीकृत उत्तर वैसे भी वही चीज़ का एक फुलाया विचार है। धन्यवाद। – SuperDuperApps