如果使用登录表单获得了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();
不知何故,它看起来太复杂了(无论如何它都不起作用)。你会如何解决这个问题?
答案 0 :(得分: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();
答案 1 :(得分:0)
从粗略的看,它看起来像是一种可行的方法。
但是,您应该从模型管理器创建模型实例,例如:
Ext.ModelMgr.create({username: 'foo', password: 'bar'}, 'User');