Sencha Touch会话存储,保存和检索

时间:2014-10-17 08:19:06

标签: sencha-touch session-storage

您好我正在尝试在我的应用程序中使用javascript会话存储在sencha触摸模型,在互联网上长时间搜索后我根本没有运气,请帮助,如果可以,谢谢。 到目前为止,这是我的代码 我的控制器 onStorage功能正常,getStorage usession.load无法加载,那就是我被卡住了

Ext.define('SideMenu.controller.Menu', {
extend: 'Ext.app.Controller',
currView:'home',
requires: ['SideMenu.model.Mymdl'],
config: {
        refs: {
               btn_localstore:'#btn_localstore',
               btn_getlocalstore:'#btn_getlocalstore'                     
              } 
        control: {
                 btn_localstore:{
                 tap: 'onStorage' 
                 },
                 btn_getlocalstore:{
                 tap: 'getStorage' 
                 },                    
              },
        onStorage:function(){
                        //create model and store data
                         var myMod = Ext.create('SideMenu.model.Mymdl',{
                         brandName:'Nike Jordan',
                         brandCat:'Sneakers'        
                         });
                        myMod.save({
                          success:function(res){
                          console.log('saved to model : '+res.get('brandName'));
                              }
                            });              
               }, 
           getStorage:function(){
                var usession = Ext.ModelMgr.getModel('SideMenu.model.Mymdl');
                console.log('model is :'+usession);

                usession.load(0, {
                          scope: this,
                          success: function(model, opp) { 
                          console.log('passed '+model.get('brandCat'));
                              },
                failure: function(record, operation) {
                console.log('failed : '+operation);
               // Ext.Viewport.setMasked(false);
                //====================================================
               // alert('could not get session details');
                //====================================================  
                   }
                  });

     }
}


我的模特

Ext.define('SideMenu.model.Mymdl', {
extend    : 'Ext.data.Model',
xtype    : 'Mymdl',
requires:['Ext.data.proxy.SessionStorage'],
id : 'Mymdl',
config: {
    fields: [ 
        'brandName',   
        'brandCat'    
    ]
     ,

     proxy : {
         type: 'localstorage',
         id  : 'mymdl'
     } 
}
});  


我的app.js 我排除了其他在这种情况下不需要的东西

models: ['Mymdl'],
views: ['Main', 'Home'],
controllers: ['Menu'],

launch:function()
{
   Ext.create('SideMenu.model.Mymdl'); 
}

您的回答将不胜感激,谢谢

1 个答案:

答案 0 :(得分:1)

您需要使用要从本地存储中检索的模型数据的ID来调用模型加载方法。

您可以从模型保存回调函数中获取id

var modelId;
myMod.save({success:function(res){
              modelId = res.getId();
              console.log('saved to model : '+res.get('brandName'));
           }
          });  

然后在加载模型时使用此ID:

SideMenu.model.Mymdl.load(modelId, function(record) {
    console.log('Brand: ' + record.get('brandName'));
}

您可以在保存模型时直接设置id值。这样可以避免在每次保存时检索并保存自动生成的ID。