2010-01-11 75 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