Как хранить учетные данные для входа в локальное хранилище - PullRequest
0 голосов
/ 21 сентября 2011

Если есть приложение Sencha Touch, с формой для входа. Для постоянных пользователей я хотел бы сохранить учетные данные для входа в локальное хранилище.

user.js

App.models.User = Ext.regModel('User', {
    fields: [
         {
            name: 'username',
            type: 'string'
        }, {
            name: 'password',
            type: 'string'
        }
    ],

    proxy: {
        type: 'localstorage',
        id: 'p2s-users'
    }
});

Users.js

App.stores.users = new Ext.data.Store({
    model: 'User',
    autoLoad: true
});

Теперь я пытаюсь синхронизировать значения формы с локальным хранилищем, как я могу это сделать, как протекает процесс чтения / получения?

Для чтения я бы сделал:

var model = new App.models.User();
users = App.stores.users.load();
if (users.data.length > 0 ) {
   model = users.getAt(0);
 } else {
   App.stores.users.create();
 }
 form.load(model);

Письмо:

 form.model.set(form.data);
 form.model.save();
 App.stores.users.sync();

Каким-то образом это выглядит слишком сложным для меня (и все равно не работает). Как бы вы решили проблему?

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Сначала убедитесь, что вы сохранили правильные модели. Например, сделайте это:

var model = new App.models.User();
    model.data.username = 'theUser';
    model.data.password = 'thePass';
    model.save(); //the actual saving. Use chrome developer tools to see the local storage

Затем загрузите модель из местного хранилища

users = App.stores.users.load();
model = users.getAt(0);

Проверьте, в порядке ли загруженная модель, и загрузите ее в форму с помощью load(model)

Форма может быть такой:

new Ext.Application({
launch: function() {
    new Ext.form.FormPanel({
            id:'theForm',
            fullscreen: true,
            defaults: {
                labelAlign: 'top',
                labelWidth: 'auto',
            },
            items: [
                {
                    id : 'userName',
                    name : 'username',
                    label: 'Email',
                    xtype: 'emailfield',
                },
                {
                    id : 'userPassword',
                    name: 'password',
                    label: 'Password',
                    xtype: 'passwordfield',
                }
             ]
        });
     }
});

Затем загрузите запись следующим образом Ext.getCmp('theForm').load(users.getAt(0));

Чтобы получить модель из формы: Ext.getCmp('theForm').getRecord();

0 голосов
/ 21 сентября 2011

На первый взгляд это выглядит как возможный способ сделать это.

Но вы должны создать экземпляры модели из менеджера моделей, например:

Ext.ModelMgr.create({username: 'foo', password: 'bar'}, 'User');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...