为dijit.TitlePane添加一些持久性(打开/关闭状态)

时间:2010-01-11 09:28:15

标签: javascript dojo

我想用dijit.TitlePane添加非常简单的基于持久性的cookie。我想确保标题窗格的状态是打开还是关闭应该保存在cookie中,以便下次加载页面时,标题窗格以记住的状态开始。这在我需要提交的表单中有很多标题窗格的情况下特别有用。

一些示例代码会有所帮助。

2 个答案:

答案 0 :(得分:4)

这样做的一种方法是从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 });                                                                                                                                                                                                                     
     }                                                                                                                                                                                                                                                                            
 });            

答案 1 :(得分:0)

您可以使用dijit.byId('idOfTitle')._isShown();获取titlePane的状态,然后将其存储在像dojo.cookie('idOfTitle', dijit.byId('idOfTitle')._isShown(), {expires: 30});这样的cookie中,这样可以将titlePane的键值对保存30天。

要检索值,您只需调用dojo.cookie('idOfTitle');即可在titlePane的状态之间切换,只需使用if语句和dijit.byId('idOfTitle').toggle()