我需要从服务器获取数据,并将模型与本地存储同步
以下是我的代码
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 () {
// }
},当我按下登录按钮时,如何将我的模型与本地存储同步?请指导我解决方案
发布于 2013-04-10 18:55:35
你的商店是bluebutton.store.BlueButton.LoginLS
尝试呼叫:
Ext.getStore('LoginLS').sync();
适用于我的程序:
我的商店的名称是例如:MyApp.store.settings.Settings。
要获得这个商店,我只需调用var settings = Ext.getStore('Settings');
现在我可以添加、删除存储中的项目,然后同步:settings.sync();
检查您的商店是否在app.js中定义。
发布于 2013-03-10 15:35:59
在创建模型对象时,在模型对象上设置脏标志:
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()。
发布于 2013-03-05 13:03:59
我可能误解了这个问题,但是你可以向存储中添加一个storeId属性,比如'blueButtonStore',然后像这样同步:
Ext.getStore('blueButtonStore').sync();要使用本地存储中存在的内容加载存储区,您可以使用
Ext.getStore('blueButtonStore').load();如果这不能解决你的问题,请告诉我。
https://stackoverflow.com/questions/15215924
复制相似问题