2011-09-21 138 views
0

如果使用登錄表單獲得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(); 

不知怎的,它看起來太複雜,我(和它不反正工作)。你將如何解決這個問題?

回答

1

首先確保您保存模型權。例如這樣做:

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 

然後從localStorage的,如果所加載的模型是確定加載模型

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

非常感謝。解決了我的問題。 – Khush

0

從粗略看,它看起來像一個可能的方式來做到這一點。

但是,你應該從模型管理器創建模型實例,例如:

Ext.ModelMgr.create({username: 'foo', password: 'bar'}, 'User'); 
+0

謝謝回答,我去與較長的答案,但在ModelMgr也給我下一個問題解決一個很好的起點。 – Beffa