2010-01-11 57 views
2

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

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

回答

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 });                                                      
    }                                                                    
});    
+0

非常感谢。这工作完美。 – 2010-01-13 12:25:36

+1

对于Dojo 1.6和之后的版本,您需要替换this.open = /true/.test(state);与this.set('open',/true/.test(state)); – faken 2011-06-17 16:54:57

0

你可以通过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()

+0

这是一个很好的使用cookies的例子:) – 2010-01-13 12:36:27