2012-11-22 13 views
13

मैंने इन दो तरीकों पर दस्तावेज़ों को पढ़ और पढ़ा है, लेकिन मेरे जीवन के लिए यह काम नहीं कर सकता कि आप एक दूसरे से क्यों उपयोग कर सकते हैं?BackboneJS collection.reset() बनाम collection.fetch()

क्या कोई मुझे सिर्फ एक बुनियादी कोड स्थिति दे सकता है जहां कोई आवेदन होगा और दूसरा नहीं होगा।

उत्तर

27

reset बनाता मॉडल की एक सरणी आपके द्वारा निर्दिष्ट के साथ संग्रह सेट आशा सर्वर, जिसे आपने संग्रह के लिए निर्दिष्ट यूआरएल का उपयोग किया है।

collection.fetch({ url: someUrl, success: function(collection) { 
    // collection has values from someUrl 
} }); 

Here's a Fiddle illustrating the difference.

+0

इस तरह के एक अच्छा, संक्षिप्त, पूरा जवाब बहुत बहुत शुक्रिया :) – benhowdle89

+0

इस जवाब पूरा नहीं हुआ है। संग्रह में सभी मौजूदा मॉडल पर लिखना रीसेट करता है या क्या? –

+0

@AlexMills हाँ, यह साफ़ करता है और फिर सेट करता है – McGarnagle

1

रीसेट() का उपयोग नई सरणी के साथ संग्रह को बदलने के लिए किया जाता है। उदाहरण के लिए:

@collection.reset(@full_collection.models) 

@full_collections मॉडल लोड जाएगा, फिर भी

@collection.reset() 

खाली संग्रह लौट आते हैं। और fetch() फ़ंक्शन मॉडल का डिफ़ॉल्ट संग्रह

3

हम यहां मान रहे हैं कि आपने documentation पढ़ा है, अन्यथा यह थोड़ा उलझन में होगा।

आप, fetch और reset के प्रलेखन पर देखने के लिए क्या यह कहते है, तो आप collection की url संपत्ति निर्दिष्ट किया है लगता है - जो कुछ सर्वर कोड की ओर इशारा करते हो सकता है, और models के json सरणी लौटने चाहिए, और आप collectionmodels से भरे जाने के लिए चाहते हैं, तो आप fetch का उपयोग करेंगे।

उदाहरण के लिए आप निम्नलिखित json संग्रह यूआरएल पर सर्वर से लौटाए जाने की है:

[{ 
    id : 1, 
    name : "a" 
}, { 
    id : 2, 
    name : "b" 
}, { 
    id : 3, 
    name : "c" 
}] 

कौन सफल लाने के बाद अपने संग्रह में 3 मॉडल का निर्माण करेगा। यदि आप collection fetchhere के कोड की तलाश करते हैं तो आप देखेंगे कि प्राप्तकर्ता प्रतिक्रिया प्राप्त करेगा और आंतरिक रूप से निर्दिष्ट विकल्पों के आधार पर reset या add पर कॉल करेगा।

तो, चर्चा पर वापस आना, reset मानता है कि हमारे पास पहले से ही json of models है, जिसे हम संग्रह में संग्रहीत करना चाहते हैं, हम इसे पैरामीटर के रूप में पास करेंगे। अपने जीवन में, कभी भी यदि आप संग्रह को अपडेट करना चाहते हैं और आपके पास पहले से ही क्लाइंट पक्ष पर मॉडल हैं, तो आपको fetch, reset का उपयोग करने की आवश्यकता नहीं है।

इसलिए, यदि आप एक ही json करना चाहते रीसेट की मदद आप कुछ इस तरह कर सकते हैं के साथ संग्रह में भरे जाने वाले:

var _self = this; 
$.getJSON("url", function(response) { 
    _self.reset(response); // assuming response returns the same json as above 
}); 

खैर, यह एक अभ्यास का पालन किया जाना नहीं है, के लिए यह परिदृश्य fetch बेहतर है, इसका उपयोग उदाहरण के लिए किया जाता है।

रीसेट का एक और उदाहरण documentation पृष्ठ पर है।

collection.reset([ { name: "model1" }, { name: "model2" } ]); 

fetch से पुन: प्राप्त करता संग्रह डेटा:

यह विचार का एक छोटा सा देता है और अपने जीवन को बेहतर :)

संबंधित मुद्दे