我的应用程序几乎已经完成了sencha touch2.3,现在我想让它在离线模式下工作。
我需要从我的服务器应用程序加载大量数据和图像,它在在线模式下工作正常。
我需要解决的问题以及我做了什么
的 1。当有网络时,需要在websql中存储数据(使用sql代理)。
我这样做..如果有网络,我正在加载在线商店并将所有记录添加到离线商店。
Ext.getStore('foodGroup').load({
callback: function(records, operation, success) {
var offFoodGrup = Ext.getStore('offFoodGroup');
offFoodGrup.add(records);
offFoodGrup.sync();
offFoodGrup.load();
}
},
scope: this
});
的 2。如果需要我需要更新离线数据,我试过但它不起作用。它会添加重复数据。
Ext.getStore('foodGroup').load({
callback: function(records, operation, success) {
var offFoodGrup = Ext.getStore('offFoodGroup');
if(records.length != (localStorage.offFoodGroup || 0)){
offFoodGrup.removeAll();
offFoodGrup.sync();
offFoodGrup.load({
callback: function(offRecords, operation, success) {
offFoodGrup.add(records);
offFoodGrup.sync();
offFoodGrup.load();
localStorage.offFoodGroup = offFoodGrup.getAllCount();
},
scope: this
});
}
},
scope: this
});
第3。我需要离线显示大量图像,所以我虽然将图像网址转换为base64字符串可能会解决我的问题。我如何在以下代码中执行此操作。
Ext.define('MyAPP.view.PhotoContainer', {
extend: 'Ext.Container',
xtype : 'photoContainer',
config:{
tpl: Ext.create('Ext.XTemplate',
'<ul class="foodList">',
'<tpl for=".">',
'<li class="foodContainer" code="{code}">',
'<img class="food" src="'+localStorage.httpServerPrefix+'food/showImage/{code}" alt="{name}"/>',
'<p code="{code}" class="foodnamestyle">{[this.getpreferedlanguage(values)]}</p>',
'</li>',
'</tpl>',
'</ul>'
}),
store : 'FoodStore'
}
});
答案 0 :(得分:0)
如果可以的话,查看FoodGroup模型以及在线和离线商店的代码会很有帮助。
使用base64格式的图像只需使用如下数据网址:
<img src="data:image/png;base64,{Your Base64 Image Data}"/>
希望有所帮助,如果你可以发布你的模特和商店,我可以帮助你。
谢谢, 特里斯坦