Настройка dijit.Tree cookie для всех страниц - PullRequest
4 голосов
/ 24 марта 2010

Я использую один и тот же dijit.Tree просмотра нескольких страниц в нашем приложении, и я хотел бы сохранить cookie для имени сервера, а не имя папки. Сейчас у меня есть 3 страницы и 3 куки, каждая из которых содержит свою собственную информацию о состоянии Дерева, что немного раздражает.

Есть ли способы сделать это? Единственное, что я нашел в файлах cookie в API , - это то, что я могу установить cookieName и включить / выключить файлы cookie.

1 Ответ

4 голосов
/ 26 марта 2010

Кажется, что Tree.js не позволит вам установить атрибуты для куки.Поэтому мне просто нужно было переписать метод _saveState() для Tree:

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, поэтому, если вы хотите установить другие атрибуты, вы так и сделаете.

...