Extjs 如何将Ext.state.Manager与localStorage一起使用,而不是与Cookie一起使用?

Extjs 如何将Ext.state.Manager与localStorage一起使用,而不是与Cookie一起使用?,extjs,cookies,state,Extjs,Cookies,State,Ext JS Ext.state.Manager只有Coockie提供程序。Cookie只能保存4096个比特,如果我的网格或树有很多列,它将溢出4096个比特,无法保存状态。 还有一个问题——每个对服务器的请求都会发送请求中的所有cookie,所以Apache或其他web服务器不能允许使用大量cookie 我想使用提供程序在localStorage中保存数据。有现成的解决办法吗?或者我必须写它?这里是我现在使用的解决方案,但可能是更复杂的解决方案吗 Ext.state.Manager.setP

Ext JS Ext.state.Manager只有Coockie提供程序。Cookie只能保存4096个比特,如果我的网格或树有很多列,它将溢出4096个比特,无法保存状态。 还有一个问题——每个对服务器的请求都会发送请求中的所有cookie,所以Apache或其他web服务器不能允许使用大量cookie


我想使用提供程序在localStorage中保存数据。有现成的解决办法吗?或者我必须写它?

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

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;
    }
})); 
Ext.state.Manager.setProvider(新的Ext.state.CookieProvider)({
setCookie:函数(名称、值){
var me=这个;
setItem(me.prefix+name,me.encodeValue(value));
},
clearCookie:函数(名称){
var me=这个;
localStorage.removietem(me.prefix+name);
},
readCookies:function(){
var prefix=this.prefix,
len=前缀.length,
cookies={};
keys=Object.keys(本地存储),
i=0;
对于(;i
这里是我目前使用的解决方案,但可能是更复杂的解决方案吗

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;
    }
})); 
Ext.state.Manager.setProvider(新的Ext.state.CookieProvider)({
setCookie:函数(名称、值){
var me=这个;
setItem(me.prefix+name,me.encodeValue(value));
},
clearCookie:函数(名称){
var me=这个;
localStorage.removietem(me.prefix+name);
},
readCookies:function(){
var prefix=this.prefix,
len=前缀.length,
cookies={};
keys=Object.keys(本地存储),
i=0;
对于(;i
我一直在使用Ext 2.x,这段代码对我帮助很大!我通过添加getCookie()函数来增强它,以从本地存储中获取项目,并且IE在使用Object.keys函数(未定义)时遇到问题,所以我需要在使用它之前定义它,正如这个网站所说:you is wellcome:-)伙计,你让我开心!我在ExtJS4.2.1中检查了您的代码,它工作得非常好。你太棒了。我一直在使用Ext2.x,这段代码帮了我很多忙!我通过添加getCookie()函数来增强它,以从本地存储中获取项目,并且IE在使用Object.keys函数(未定义)时遇到问题,所以我需要在使用它之前定义它,正如这个网站所说:you is wellcome:-)伙计,你让我开心!我在ExtJS4.2.1中检查了您的代码,它工作得非常好。你真棒。