2012-03-28 6 views
8

जावास्क्रिप्ट एक बहुत सरल लगता है, बस localStorage.clear()।रीढ़ की हड्डी स्थानीय स्टोरेज को साफ़ करने के लिए कैसे करें

क्या रीढ़ की हड्डी के स्थानीय भंडारण के लिए ऐसा कुछ भी है, और यदि नहीं, तो क्या कोई मुझे सही दिशा में इंगित कर सकता है कि इसे कैसे किया जाए।

मैं कुछ इस तरह करने के बारे में सोच रहा था:

localStorage.each (localStorage.delete (यह))

इस सिवाय इसके कि तत्व को इंगित नहीं होता यह होता?

+0

Backbone.js बॉक्स के बाहर स्थानीय स्टोरेज का उपयोग नहीं करता है। क्या आप [यह] (https://github.com/jeromegn/Backbone.localStorage) या कुछ और उपयोग कर रहे हैं? – nrabinowitz

+0

केवल एक 'स्थानीय स्टोरेज' है और रीढ़ की हड्डी इसका लाभ उठाएगी। क्या आपको वास्तव में रीढ़ की हड्डी संग्रह को साफ़ करने का मतलब है? – abraham

+0

हां यही वह है जो मैं nrabinowitz का उपयोग कर रहा हूं, और मुझे लगता है कि मेरा मतलब है अब्राहम। – prashn64

उत्तर

5

संग्रह से आप इसे कैसे कर सकते हैं, लेकिन जिस भी तरीके से आप चुनते हैं, आपको प्रत्येक मॉडल पर नष्ट करना होगा, जो सिंक चलाएगा और क्लाइंट-साइड और सर्वर-साइड दोनों पर इसे नष्ट कर देगा (जो स्थानीय स्टोरेज है के रूप में)।

collection.each(function(model) { 
     model.destroy(); 
    } 
) 

अद्यतन

टिप्पणियों के अनुसार, इस तरह नहीं दिखता है अब और काम करता है। चूंकि इसे अभी भी उत्तर के रूप में चिह्नित किया गया है, जिसमें उत्तर नीचे काम करना चाहिए, प्रति skcin7

while ((model=collection.shift())) 
    { model.destroy(); 
} 
+0

धन्यवाद डीसी- विनाश समारोह वह है जिसे मैं ढूंढ रहा था। – prashn64

+0

क्या होगा यदि मैं केवल पहले डेटा को मिटाना चाहता हूं? – jongbanaag

+0

@ ड्रेफस 15 फिर उस विशिष्ट तत्व पर .destroy() को कॉल करें। उदाहरण के लिए: संग्रह .get (आईडी) .destroy(); – ffleandro

5

मैं कब्र खुदाई की तरह महसूस करता इस तरह का पता है, लेकिन मैं थोड़ी देर के लिए इस के लिए एक समाधान के लिए अब देख रहा था और इसके बाद के संस्करण के टुकड़े में से कोई भी मेरे लिए काम करने के लिए लग रहा था। मैं हमेशा संग्रह के आकार को आधे से कम कर देता हूं, इससे कोई फर्क नहीं पड़ता कि मैंने इसे कैसे किया।

तो नगण्य की एक सभ्य राशि के बाद, मैं इस के साथ आया था:

var length = collection.length; 
for (var i = 0; i < length; i++) { 
    collection.at(0).destroy(); 
} 

रीढ़ "मक्खी पर" आइटम को हटाने है, इसलिए यदि आप 40 आइटम नहीं हैं जिसे आप हटाना नहीं कर सकेंगे 21. आइटम क्योंकि केवल 20 आइटम बाकी हैं। आश्चर्यजनक रूप से यह संग्रह.ईच() फ़ंक्शन को प्रभावित करता है जो वास्तव में मुझे एक बग जैसा लगता है ..

+2

मैंने समझाया कि यह क्यों होता है [यहां] (http://stackoverflow.com/a/18395310/722238), समाधान के साथ। – fbynite

+0

यदि आप संग्रह का उपयोग नहीं कर रहे हैं, लेकिन एक मॉडल का उपयोग नहीं कर रहे हैं, तो आप स्थानीय स्टोरेज को कैसे साफ़ करते हैं, मैं बस बनाए गए डेटा के स्थानीय स्टोरेज को साफ़ करना चाहता हूं ... यह संगीत नामक एक कुंजी बना रहा है: कुछ संख्यापत्र कॉम्बो का मूल्य और फिर एक और कुंजी पहले से मूल्य के साथ संगीत और उसके नए मूल्य की जानकारी मेरे पास सही है ... कोड के लिए यह प्रश्न देखें http://stackoverflow.com/questions/19472777/clear-localstorage-and-change-the-view- रीढ़ की हड्डी – Lion789

1

बस संग्रह पर पुनरावृत्ति और प्रत्येक तत्व पर नष्ट करने से किसी भी मामले में सहेजा नहीं जाता है। एक ही समय में संशोधित संग्रह पर पुनरावृत्ति का कारण अप्रत्याशित परिणाम उत्पन्न कर सकता है।

पहले इस क्लोन पर संग्रह और पुनरावृत्ति को क्लोन करना बेहतर है। अधिक जानकारी के लिए चेकआउट this.each not iterating through collection correctly

उदाहरण:

_.chain(Todos.models).clone().each(function(model){ 
    console.log('deleting model ' + model.id); 
    model.destroy(); 
}); 
+0

'_.chain (Todos.models) 'के बजाय आप' Todos.chain() क्लोन() 'भी कर सकते हैं। – Webthusiast

0

आप इस प्रोग्राम के रूप में करने के लिए नहीं करना चाहते हैं, तो आप हमेशा ऊपर डेवलपर मोड (F12) खोल सकते हैं, संसाधन टैब पर जाएँ, बाएँ फलक से "स्थानीय संग्रह" का चयन करें और रिकॉर्ड हटा दें।

नोट: केवल क्रोम में परीक्षण किया गया।