PDA

View Full Version : LocalStorage for Application Settings, and remove



legege
28 Dec 2010, 11:24 AM
Hi,

I'm trying to store application settings in a the browser (HTML5 local storage) and I have difficulties to figure out a way to load and save settings without getting more than Store item. What I'm really trying to achieve is to have a single "Account" object, that gets updated with a settings FormPanel (and when the application launches the first time, the user is automatically prompted for settings). I haven't been able to find a way to reuse a Model, so I decided to go with a non-reusable Model: when the user save settings, the app delete the old Model and create a new one. But, for a strange reason, the Model never gets deleted...

Here is an example. The account object is still in the Local Storage at the end.



Ext.setup({
icon: 'icon.png',
tabletStartupScreen: 'tablet_startup.png',
phoneStartupScreen: 'phone_startup.png',
glossOnIcon: false,

onReady: function() {
Ext.regModel('Account', {
fields: [
{name: 'username', type: 'string'},
{name: 'password', type: 'password'}
],

proxy: {
type: 'localstorage',
id : 'testapp-account'
}
});

var store = new Ext.data.Store({
model: "Account"
});
store.load();

var account = store.first();
if (!account) {
store.add({username: 'test', password: '12345'});
store.sync();

account = store.first();
}

store.remove(account);
store.sync();
}
});


Thanks for your help.

mrsunshine
29 Dec 2010, 4:22 AM
I did a user setting saving in localstorage in my chat example application. it also shows the settings dialogbif no data is stored.

me it help you to look n the code of my app

https://github.com/mrsunshine/Mobile-Chat-with-Sencha-Touch---node.js---socket.io-

legege
29 Dec 2010, 4:50 AM
Thanks for this. I try, but it looks like you have the same problem I have. Removing configuration doesn't work, it looks like a Sencha Touch bug.

Steps to reproduce with your App:
1. Clean localstorage, launch app
2. Save settings
3. Reload app
4. Go to settings, change something, save
5. The localstorage now contains 2 items...



chat-settings-counter: 2
chat-settings-2: {"server":"localhost","nickname":"test125","email":"me@example.com","gravatar":"..."}
chat-settings-1: {"server":"localhost","nickname":"test123","email":"me@example.com","gravatar":"..."}
chat-settings: 1,2

chummy
30 Dec 2010, 1:10 PM
It seems you have to add a field with name "id" and type "int" to your model. This field gets populated by sencha touch and from a quick look at the code it seems that the remove function uses this field to identify the model instance to remove.

Hope it helps.

Chummy

mrsunshine
10 Feb 2011, 7:51 AM
Yes, it work, thanks

jianbinjblin
2 Jun 2012, 3:16 PM
1. The localstorage is empty:
2. Insert 3 records into localstorage:
3.Update a record, then the "clients" going wrong:
4.Delete the record updated:
5.The data in localstorage can't be load automatically.
http://www.sencha.com/forum/image/png;base64,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35861358623586335864