如何使用带有localStorage的Ext.state.Manager而不是cookie?

时间:2014-07-20 11:56:03

标签: extjs cookies state

Ext JS Ext.state.Manager只有Coockie提供者。 Cookie只能容纳4096个叮咬,如果我的网格或树有很多列 - 它会溢出4096个叮咬并且无法保存状态。 另一个问题 - 每个服务器请求都会在请求中发送所有cookie,因此Apache或anoter Web服务器不允许使用大量cookie。

我想使用Provider在localStorage中保存数据。有没有现成的解决方案或者我必须写它?

1 个答案:

答案 0 :(得分:4)

这是我现在使用的解决方法,但可能是更复杂的解决方案?

Ext.state.Manager.setProvider(new Ext.state.CookieProvider({
    setCookie : function(name, value){
       var me = this;
       localStorage.setItem(me.prefix+name,me.encodeValue(value));
    },
    clearCookie : function(name){
        var me = this;
        localStorage.removeItem(me.prefix+name);
    },
    readCookies : function(){
        var prefix = this.prefix,
            len = prefix.length,
            cookies = {};
            keys = Object.keys(localStorage),
            i = 0;
        for (; i < keys.length; i++) {
            console.log(keys[i].substring(0, len));
            if (keys[i] && keys[i].substring(0, len) == prefix){
            cookies[keys[i].substr(len)]= this.decodeValue(localStorage.getItem(keys[i]));
        }
    }
        return cookies;
    }
}));