/ / स्नेहा टच - ऑफलाइन स्टोर के साथ ऑफ़लाइन आवेदन ऑनलाइन स्टोर में सिंक किया गया। मांग पर ऑनलाइन डेटा प्राप्त करें और ऑफ़लाइन जोड़ें

सेन्चा टच - ऑफलाइन स्टोरेज के साथ ऑफ़लाइन एप्लिकेशन ऑनलाइन स्टोर में सिंक हो गया। मांग पर ऑनलाइन डेटा प्राप्त करें और ऑफ़लाइन में जोड़ें स्टोरेज - extjs, सेन्चा-टच, extjs4, स्टोर, सेन्चा-टच -2

मैं सिर्फ sencha के साथ एक वेब अनुप्रयोग पर काम कर रहा हूँस्पर्श करें। मुझे एक स्टोर (एक ग्रिड से जुड़ा हुआ) लागू करने की आवश्यकता है जो ऑफ़लाइन उपलब्ध है (ऑफलाइनस्टोर) लेकिन इंटरनेट कनेक्शन उपलब्ध होते ही डेटा (ऑनलाइन) प्राप्त करना और अपडेट करना। यह आवश्यक है क्योंकि मेरे पास बहुत अधिक डेटा है और मैं स्टोर पर बहुत सारे रिमोट फ़िल्टरिंग और खोज कर रहा हूं। मैं शुरू से ही पूरा स्टोर लोड नहीं कर सकता क्योंकि यह बहुत बड़ा है। अधिमानतः मुझे तेज़ उपयोगकर्ता अनुभव के लिए एक ऑफ़लाइनस्टोर का उपयोग करना पसंद है। नए फ़िल्टर / अनुरोधों को सर्वर (ऑनलाइन स्टोर) से डेटा का अनुरोध करना चाहिए और सर्वर से सिंक में रखने के लिए इसे ऑफ़लाइनस्टोर में अपडेट / जोड़ना चाहिए।

ग्रिड <-bind-> स्टोर (ऑफलाइनस्टोर) <- नए फ़िल्टर पर दूरस्थ डेटा -> ऑनलाइन स्टोर

मेरे लिए एक शुरुआती बिंदु है http://www.sencha.com/learn/taking-sencha-touch-apps-offline/#leave-reply। हालाँकि मुझे ऑफ़लाइन स्टोरेज से डेटा लोड होते ही ऑनलाइन स्टोर को ट्रिगर करना पड़ता है या एक फ़िल्टर सेट होता है।

क्या किसी ने अभी तक इस तरह से कुछ लागू किया है? कोई संकेत / विचार कि इसे कैसे लागू किया जाए?

तुम्हारी मदद के लिए शुक्रिया!!

उत्तर:

जवाब के लिए 3 № 1

सांचा टच के भीतर यह वास्तव में "सिंक्रनाइज़" और ऑनलाइन स्टोर के लिए एक और "ऑफलाइन" स्टोर के लिए प्राप्त डेटा के साथ आसान है।

ऑफ़लाइन स्टोर परिभाषित करें:

    // Offline store (local storage)
var schouwLijstOffline = new Ext.data.Store({
model: "schouwLijst",
storeId: "schouwLijstOffline",
proxy: {
type: "localstorage",
id: "schouwid"
},
});

अब आप अपने मुख्य स्टोर (डेटा के पहले लाने) पर एक श्रोता का उपयोग कर सकते हैं और लोड घटना (इस मामले में मैन्युअल रूप से ट्रिगर होने के कारण "ऑटोलेड: झूठे") को सुन सकते हैं।

लोडर के भीतर आप "स्पष्ट () ऑफलाइनस्टार का छद्म और उसके बाद डेटा के साथ ऑफ़लाइन स्टोर भरें"storeId"*. add ()* समारोह।

मेरे उदाहरण में मैंने "ऑफलाइनस्टोर" से सारी जानकारी हटा दी है क्योंकि मुझे अब इसकी आवश्यकता नहीं है (यह ऑफलाइन में है)।

श्रोता के साथ ऑनलाइन स्टोर:

var schouwLijstStore = new Ext.data.Store({

model: "schouwLijst",
storeId: "schouwLijstStore",
proxy: {
type: "ajax",
url: "php/json.php?t=list",
reader: {
type: "json",
root: "list"
},
},
autoLoad: false,
listeners: {
load: function() {

// Clear proxy from offline store
schouwLijstOffline.proxy.clear();

// Loop through records and fill the offline store
this.each(function(record) {

schouwLijstOffline.add(record.data);

});

// Sync the offline store
schouwLijstOffline.sync();

// Remove data from online store
schouwLijstStore.removeAll();

}

}

});

अब जब आप नए फ़िल्टर / डेटा लाने के लिए एक नया अनुरोध करते हैं तो आप उसी प्रक्रिया को दोहरा सकते हैं:

  • ट्रिगर ऑनलाइन स्टोर (storeId.update ();)
  • श्रोता ऑनलाइन स्टोर से ऑफ़लाइनस्टॉर पर डेटा जोड़ता है
  • ऑफलाइनस्टार का उपयोग करें

पूरक:

एक स्टोर से सभी डेटा को हटाने के लिए आप उपयोग कर सकते हैं: storeId.removeAll ();

मुझे लगता है कि यह आपको सही दिशा में ले जाएगा, अगर कुछ अस्पष्ट है तो कृपया कहें।