#tree #dojo
#дерево #dojo
Вопрос:
Я использую тот же dijit.Древовидный просмотр нескольких страниц в нашем приложении, и я бы хотел, чтобы файл cookie сохранялся для имени сервера, а не для имени папки.
Прямо сейчас у меня есть 3 страницы и 3 файла cookie, каждый из которых содержит свою собственную информацию о состоянии дерева, что немного раздражает.
Есть ли способы добиться этого? Единственное, что я нашел о файлах cookie в API, это то, что я могу устанавливать cookieName
и включать / выключать файлы cookie.
Ответ №1:
Похоже, что Tree.js
это не позволит вам установить атрибуты для файла cookie. Итак, мне просто пришлось перезаписать _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, поэтому, если вы хотите установить какие-либо другие атрибуты, вот как вы это сделаете.
Комментарии:
1. Очень полезно. Было бы неплохо, если бы это был официальный API для изменения устойчивости дерева на общесистемную. Вы можете подать заявку на повышение квалификации.