के बीच परिपत्र निर्भरता मैं मौजूदा वर्किंग कोड बेस लेने और जावास्क्रिप्ट का उपयोग करके ऑब्जेक्ट उन्मुख बनाने की कोशिश कर रहा हूं। मेरी प्रणाली में एक से अधिक रिश्तों में समूह और आइटम युक्त JSON लेता है, और इसे किसी पृष्ठ पर विज़ुअलाइज़ करता है। वस्तुओं को विभिन्न समूहों में स्थानांतरित किया जा सकता है, और उन समूहों के भीतर उनकी स्थिति को भी गणना करने की आवश्यकता है। इस प्रकार, घटनाओं को स्थापित करने की आवश्यकता होगी जो उनके आसपास के समूहों और टिकट दोनों से अवगत हैं।जावास्क्रिप्ट क्लास और jQuery ऑब्जेक्ट
मैं दो कक्षाओं, Item
और Group
स्थापित करने के लिए John Resig's सरल जावास्क्रिप्ट विरासत सेटअप का उपयोग कर रहा हूं। जब प्रत्येक Item
तत्काल होता है तो यह उसके माता-पिता Group
पर वापस संदर्भित करता है। मेरे मुद्दा उठता है जब मैं अपने घटनाओं स्थापित करना चाहते हैं, और सबसे आसानी से निम्नलिखित समारोह द्वारा समझाया गया है:
var Group = Class.extend({
...
// Calculate where to place the new item within the group
calculate_new_position: function(item) {
var pos = -1;
// Loop through all DOM items in groups body
$(".item", this.elBody).each(function(i) {
// Retrieve it's class object
var next = $(this).data("_obj");
// Calculating things using the class reference
var lowerPrio = item.tData.priority < next.tData.priority,
lowerId = item.id < next.id;
if(lowerPrio || lowerId) {
pos = i;
return false;
}
});
return pos;
},
...
)};
नोट ऊपर स्निपेट में .data("_obj")
का उपयोग। अनिवार्य रूप से, जब मुझे वस्तुओं को सॉर्ट करने की तरह कुछ करने की आवश्यकता होती है, तो मुझे समूह में प्रत्येक आइटम के डोम (व्यू/कंट्रोलर) से संबंधित वस्तु (मॉडल) को जानने की आवश्यकता होती है। अब, मैं अपना Group
कक्षा स्थापित कर सकता हूं ताकि जब मैं प्रत्येक Item
बनाउंगा, तो मैं इसे Group
(उदा। Group.items = [i1, i2...]
) के भीतर से संदर्भित करता हूं, और फिर डीओएम तत्वों को फिर से चालू करने के बजाय, मैं Item
उदाहरणों पर फिर से चला सकता हूं। हालांकि मुझे लगता है कि मैं लाइन के नीचे समान समस्याओं में भाग लेगा, जैसे कि जब मैं Item
को एक अलग Group
में स्थानांतरित करना चाहता हूं (Group
Item
के बारे में नहीं पता होगा)।
लंबी कहानी कम: यह आंतरिक रूप से खतरनाक/भोली/व्यर्थ एक वर्ग है जो जब instantiated एक डोम तत्व बनाता है, है जो तब बारी अंक वापस वर्ग के लिए में? यह परिपत्र निर्भरता, और कुछ पुनरावर्ती दुःस्वप्न की तरह लगता है, लेकिन शायद किसी वस्तु का संदर्भ ऐसी भयानक बात नहीं है। अगर मैं कुछ और कर रहा हूं वास्तव में बेवकूफ, और एक बहुत ही आसान तरीका है, तो कृपया इसे भी इंगित करें।
क्या आपने देखा है कि Backbone.js कैसे करता है? एक 'व्यू' ऑब्जेक्ट में 'मॉडल' (आपकी वस्तु, समूह श्रेणी) और डीओएम तत्व 'el' का संदर्भ होता है। इसे करने और बैकबोन करने के कई तरीके हैं।जेएस यहां किसी भी तरह की सिफारिश नहीं करता है: http://backbonejs.org/#FAQ-tim-toady – vsr