Extjs 如何将Ext.state.Manager与localStorage一起使用,而不是与Cookie一起使用?
Ext JS Ext.state.Manager只有Coockie提供程序。Cookie只能保存4096个比特,如果我的网格或树有很多列,它将溢出4096个比特,无法保存状态。 还有一个问题——每个对服务器的请求都会发送请求中的所有cookie,所以Apache或其他web服务器不能允许使用大量cookieExtjs 如何将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
我想使用提供程序在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中检查了您的代码,它工作得非常好。你真棒。