我想添加非常简单的基于cookie的持久性与dijit.TitlePane。我想确保标题窗格的状态是打开还是关闭,应该保存在一个cookie中,以便下次加载页面时,标题窗格以记住状态开始。这在需要提交的表单中有很多标题窗格的情况下特别有用。添加一些持久性到dijit.TitlePane(打开/关闭状态)
一些示例代码会有所帮助。
我想添加非常简单的基于cookie的持久性与dijit.TitlePane。我想确保标题窗格的状态是打开还是关闭,应该保存在一个cookie中,以便下次加载页面时,标题窗格以记住状态开始。这在需要提交的表单中有很多标题窗格的情况下特别有用。添加一些持久性到dijit.TitlePane(打开/关闭状态)
一些示例代码会有所帮助。
一种方法的价值,是从TitlePane控件继承,并添加自己的实现到它。
dojo.require("dijit.TitlePane");
dojo.declare("dijit.MyTitlePane" , [ dijit.TitlePane ] ,
{
postCreate : function() {
var state = dojo.cookie(this.id);
if(state !== undefined){
this.open = /true/.test(state);
}
this.inherited(arguments);
},
toggle : function() {
this.inherited(arguments);
dojo.cookie(this.id, this.open , { expires : 365 });
}
});
你可以通过dijit.byId('idOfTitle')._isShown();
得到titlePane的状态,你可以将它存储在这样的cookie中,如dojo.cookie('idOfTitle', dijit.byId('idOfTitle')._isShown(), {expires: 30});
这样可以将titlePane的键值对保存30天。
要检索你只需要调用dojo.cookie('idOfTitle');
到titlePane的状态之间切换只需使用一个,如果这样的说法和dijit.byId('idOfTitle').toggle()
这是一个很好的使用cookies的例子:) – 2010-01-13 12:36:27
非常感谢。这工作完美。 – 2010-01-13 12:25:36
对于Dojo 1.6和之后的版本,您需要替换this.open = /true/.test(state);与this.set('open',/true/.test(state)); – faken 2011-06-17 16:54:57