2014-03-04 117 views
1

我的應用程序幾乎完成sencha touch2.3,現在我想讓它在離線模式下工作。Sencha觸摸應用程序在離線

我需要從我的服務器應用程序中加載大量數據和圖像,它在在線模式下工作正常。

問題,我需要解決什麼,我做了

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.我需要脫機顯示大量的圖片,所以我雖然圖像URL轉化爲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

這將是有益的,看看你的FoodGroup模型和在線和離線商店如果多數民衆贊成確定代碼。

隨着Base64格式圖像只使用這樣的數據網址:

<img src="data:image/png;base64,{Your Base64 Image Data}"/> 

希望幫助,如果你可以發表你的模型和商店,我也許可以幫助這一點。

謝謝, Tristan