我需要从我的服务器获取数据并将模型与我的本地存储同步
这是我的代码
model.js
Ext.define('bluebutton.model.BlueButton.Loyalty', {
extend: 'Ext.data.Model',
config: {
idProperty: 'loyaltyModel',
fields: [
{ name: 'fullName' },
{ name: 'age' },
{ name: 'lastvisited' },
{ name: 'consumer_bbID' },
{ name: 'merchant_bbID' },
{ name: 'sessionId' },
{ name: 'deviceId' },
{ name: 'updatedPoint' },
{ name: 'currentPoint' },
{ name: 'action' },
{ name: 'result' },
{ name: 'loyaltyMembership_Id'}
],
proxy: {
type: 'rest',
url: 'http://192.168.251.131:8080/WebCommon/rest/BBWebService/updateLoyaltyCardPoint',
reader: 'json',
actionMethods: {
create: 'POST',
read: 'POST',
update: 'PUT',
destroy: 'DELETE'
},
noCache: false, // get rid of the '_dc' url parameter
// extraParams: {
// userid: "test",
// // add as many as you need
// },
// timeout:300,
// listeners: {
// exception: function(proxy, response, operation) {
// alert("Connection Problem");
//
// }
// },
reader: {
type: 'json',
},
writer: {
type: 'json',
},
}
}
});
Store.js
Ext.define('bluebutton.store.BlueButton.LoginLS', {
extend: "Ext.data.Store",
requires: ['bluebutton.model.BlueButton.Login'],
config: {
model :'bluebutton.model.BlueButton.Login',
proxy: {
type: 'localstorage',
id: 'loginLS'
}
}
});
View.js
Ext.define('bluebutton.view.Login', {
extend: 'Ext.form.Panel',
xtype: 'loginview',
id: 'loginview',
requires: [
'bluebutton.view.Main',
'Ext.field.Password',
'bluebutton.store.BlueButton.LoginLS'
],
config: {
labelWidth: 80,
frame: true,
title: 'Please Login',
items: [
{
xtype: 'textfield',
id: 'bbID',
label: 'User ID',
},
{
xtype: 'passwordfield',
id: 'bbPassword',
label: 'Password',
},
{
xtype: 'button',
text: 'Login',
id:'btnLogin',
// handler: function () {
// }
},
当我按下登录按钮时,如何将我的模型与localstorage同步?请指导我这样的解决方案
答案 0 :(得分:2)
创建模型对象时设置脏标志:
var loyalty = Ext.create('bluebutton.model.BlueButton.Loyalty', { ... });
loyalty.setDirty(true); // <== missing step!
var store = Ext.getStore('blueButtonStore');
store.add(loyalty);
store.sync();
您还可以为商店配置设置autoSync:true和autoLoad:true,以避免必须执行store.load()和store.sync()。
答案 1 :(得分:1)
我可能误解了这个问题,但您可以向商店添加storeId
属性,例如'blueButtonStore',并像这样同步:
Ext.getStore('blueButtonStore').sync();
要使用本地存储中存在的内容加载商店,您可以使用
Ext.getStore('blueButtonStore').load();
如果这不符合你的问题,请告诉我。
答案 2 :(得分:0)
您的商店是bluebutton.store.BlueButton.LoginLS
?
尝试致电:
Ext.getStore('LoginLS').sync();
对我有用的程序:
我的商店名称例如:MyApp.store.settings.Settings
要获得此商店,我只需致电var settings = Ext.getStore('Settings');
现在,我可以添加,删除商店中的商品,然后同步:settings.sync();
检查您的商店是否在app.js中定义。