2014-10-17 4 views
0

Привет, я пытаюсь использовать хранилище сессий javascript для своего приложения в сенсорном приложении sencha с моделью, после долгого поиска в Интернете мне не повезло, пожалуйста, помогите, если сможете, спасибо , Это мой код.
Мой контроллер onStorage функция работает, getStorage usession.load не загружается, то будет были я застрял
Sencha Touch sessionstorage, save and retrieve

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'); 
       //==================================================== 
        } 
        }); 

    } 
} 


My Model

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 i исключены другие вещи, которые не нужны в этом случае

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

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

Ваш ответ будет признателен, спасибо

ответ

1

Вам нужно будет вызвать метод модели нагрузки, используя идентификатор модели данных, которые вы хотите извлечь из локального хранилища.

Вы можете получить идентификатор из модели экономии функции обратного вызова

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

Затем используйте этот идентификатор при загрузке модели:

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

Вы можете установить значение идентификатора непосредственно при сохранении модель. Это избавит вас от необходимости извлекать и сохранять автоматически сгенерированный идентификатор при каждом сохранении.

+0

Jeff Martin, чувак, вы только что спасли моего мужчину жизни, спасибо большое, я боролся с этим в течение двух дней ... dse ребята, Сенча не мог мне даже помочь, к сожалению, я не могу уклониться от своей низкой репутации. .bt thnks bru, ura genius man –

+0

еще одна вещь, как я могу установить значение id при сохранении модели. –

+0

Свойство id модели создается автоматически. Вы можете использовать model.set ('id, [value]) для установки значения. –