如何在sencha中使用sessionStorage?

时间:2013-11-14 22:13:04

标签: javascript extjs session-storage

我试图让它一旦用户登录并点击刷新它们将保持在同一页面上。但是现在,当用户登录并单击刷新时,它们将被发送回登录屏幕。我知道会话存储用于浏览器未关闭,这是我需要的。我似乎无法让它正常工作。

模型

             Ext.define('MeterReadingsApp.model.Login', {
             extend: 'Ext.data.Model',
              config: {

            fields: [{name: "username", type:'string'}, {name: "password",                                     
               type:'string'}],

                     identifier: 'uuid'

              }
             });    

存储

  Ext.define('MeterReadingsApp.store.Login', {
                 extend: 'Ext.data.Store',
                        //requires: ['Ext.data.proxy.SessionStorag'],
                         config: {
                    model: 'MeterReadingsApp.model.Login',

                         //sessionStorage.type: 
                proxy: {
                //use sessionstorage if need to save data for that
              //specific session only
           type: 'sessionstorage',
                  id  : 'Login'
            },
                 autoLoad: false
                   }
           });
        //var Login = Ext.create('MeterReadingsApp.store.Login');
            //Login.load();

app.js

launch: function() {
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();
    var session=Ext.getStore('Login');
   session.load();
   var  record = session.getAt('userName');
   alert(record);
   if(record != undefined){
       //exits to main menus not login
   }
   else
        Ext.Viewport.add(Ext.create('MeterReadingsApp.view.Login'));



},

控制器

  loginButton: function(){
// var me = this;

  Ext.Ajax.request({   
           useDefaultXhrHeader:false,
           url: getLogonUrl(),
           method: 'POST',
           headers: { 'Content-Type' : 'application/x-www-form-urlencoded' },
           params : {
           "userName": Ext.getCmp('username').getValue(),
           "password": Ext.getCmp('password').getValue()
           },


           success: function (response) {
               Ext.getCmp('failLogin').hide(),

             Ext.getStore('Login').sync();


               Ext.Viewport.setActiveItem({xtype: 'Main'});
               Ext.getStore('Campuses').load();


           },
           failure: function(response) {
              Ext.getCmp('loginform').doSetHeight(250),
              Ext.getCmp('failLogin').show();

           }
        });
     },

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要在商店中设置storeId属性。您正在尝试使用代理的ID来获取商店。