我的应用是需要填写的待办事项表格列表。
截至目前:当我再次打开应用程序时,它会收集相同的ToDo列表并使用新的空表单覆盖LocalStorage中的数据(即我填写的表单),因此我需要再次填写它们。
我想要的是:我不需要覆盖已填写的表格,而只需收集那些尚未在我的本地存储中的表格。
我的代码: 店铺: - 代码:
FMS.stores.onlineTodo = new Ext.data.Store({
model: 'ToDoMod',
proxy: {
id : 'fmsonlinetodo',
type: 'ajax',
url: 'app/data/dummydata.json',
reader: new Ext.data.JsonReader({
root: 'items'
}),
timeout: 2000,
listeners: {
exception:function () {
console.log("I think we are offline");
flagoffline = 1;
//
}
}
}
});
FMS.stores.offlineTodo = new Ext.data.Store({
model : 'ToDoMod',
proxy : {
type : 'localstorage',
id : 'fmsofflinetodo'
}
});
将数据加载到商店的控制器功能:
代码:
loadDataInitial : function(){
FMS.stores.onlineTodo.addListener('load', function () {
console.log("I think we are online");
FMS.stores.offlineTodo.proxy.clear();
FMS.stores.onlineTodo.each(function (record) {
FMS.stores.offlineTodo.add(record.data)[0];
});
FMS.stores.offlineTodo.sync();
FMS.stores.offlineTodo.load();
flagoffline = 0;
});
if(flagoffline == 0){
FMS.stores.onlineTodo.load();
}
else{
FMS.stores.offlineTodo.load();
}
},
帮助!!!!!
答案 0 :(得分:0)
如果我没弄错的话,你在使用它时清除所有的localStorage记录:
FMS.stores.offlineTodo.proxy.clear();
您要做的是使用在线商店收集所有数据库记录,然后为每条记录查询同一记录的本地存储,如果存在,请不要更新它。
基本上是版本控制方法,但绝对不清除商店,你将删除其中的所有内容!
更新:
以下是一些示例代码:
//load remotestore
remoteStore.load({
scope: this,
callback: function (records, operation, success) {
//get record count
var localCount = localStore.getCount();
if (localCount == 0) {
//iterate each record in remotestore
remoteStore.each(function (record) {
//add record to localStorage
localStore.add(record.copy());
});
//save localstore
localStore.sync();
} else {
//set count var
var count = 0;
//iterate each record in remotestore
remoteStore.each(function (record) {
//reset var
var localRecord = null;
//find matching record in localstore
localRecord = localStore.findRecord('xid', record.data.xid, null, false, false, true);
//if the record exists
if (localRecord) {
//version check
if (record.data.version > localRecord.data.version) {
//remove record from localstore and add new one
localStore.remove(localRecord);
localStore.add(record.copy());
//increment counter
++count;
}
} else {
//add record to localstore
localStore.add(record);
}
});
//save localstore
if (localStore.sync()) {
alert("store saved");
}
//if records were added we need to reload
if (count > 0) {
this.onUpdate();// or whatever your function is.
}
}
}
}); //ends
答案 1 :(得分:0)
在商店的加载方法中,只需传递addRecords:true,如下所示:
FMS.stores.onlineTodo.load({addRecords: true});