2010-03-24 86 views
4

我在我們的應用程序的幾個頁面上使用相同的dijit.Tree視圖,並且希望將Cookie保存爲服務器名稱而不是文件夾名稱。
現在我已經有了3頁和3個餅乾,每個餅乾都擁有自己關於樹狀態的信息,這有點煩人。爲所有頁面設置dijit.Tree cookie

任何方式來實現這一目標?我在API上唯一發現的Cookie是我可以設置cookieName並打開/關閉Cookie。

回答

4

似乎Tree.js不會讓您設置cookie的屬性。所以我不得不改寫爲Tree_saveState()方法:

var treeControl = new dijit.Tree({ 
    model: treeModel, 
    showRoot: false, 
    openOnClick: false, 
    cookieName: "OrganizationUnitTreeState", 
    _saveState: function(){ 
     // summary: 
     // Create and save a cookie with the currently expanded nodes identifiers 
     // Overre the default saveState function, so we can set the cookie path 
     if(!this.persist){ 
      return; 
     } 
     var ary = []; 
     for(var id in this._openedItemIds){ 
      ary.push(id); 
     } 
     dojo.cookie(this.cookieName, ary.join(","), {expires:365, path:"/"}); 
    }, 
    /* Many more methods */ 
}); 

它的代碼的最後一行有沒有做的伎倆。 dojo.cookie()需要一個鍵/值對的列表,它將被轉換成cookie屬性,所以如果你想要設置任何其他屬性,這就是你要做的。

+0

非常有用。 '如果這是一個用於改變站點範圍內的樹持久性的官方API,那會很好。您可以提交增強權證。 – 2010-12-21 09:54:36

相關問題