Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2009, 19:54
Интересующийся
Отправить личное сообщение для ast-ross Посмотреть профиль Найти все сообщения от ast-ross
 
Регистрация: 19.03.2009
Сообщений: 11

jquery.dynatree + cookie не получается запомнить открытый путь дерева.
Здравствуйте Уважаемые!
Помогите новичку с jquery, а конкретно с плагином dynatree
Есть такой код:

index.html
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<title>TEST</title>
		<script src='./libs/jquery/jquery.js' type='text/javascript'></script>
		<script src='./libs/jquery/jquery.ui.core.js' type='text/javascript'></script>
		<script src='./libs/jquery/jquery.cookie.js' type='text/javascript'></script>
		<script src='./libs/jquery/jquery.dynatree.js' type='text/javascript'></script>
		<script src='./libs/jquery/my_tree.js' type='text/javascript'></script>
		<link href='./css/dynatree.css' rel='stylesheet' type='text/css'>
	</head>
	<body>
		<div id="tree"></div>
	</body>
</html>


my_tree.js
$(function(){
  $("#tree").dynatree({
    title: "Lazy loading sample",
    rootVisible: true,
    persist: true,
    children: [
      {title: "Dir - 2", isFolder: true, key: "1",
      children: [
        {title: "Dir - 2.1", isFolder: true, key: "2", children: [{title:"File - 2.1.1"}]},
        {title:"File - 2.1"},
        {title:"File - 2.2"},
        {title:"File - 2.3"}
        ]}
      ]
  });
});


По идее
Код:
persist: true
включает работу кукисов для запоминания пути раскрытых ветвей дерева, а по факту работает следующим образом:

Кликаем по Dir - 2, нажимаем F5 страница перегружается Dir - 2 выделена, но не раскрыта, еще раз жмем F5, теперь выделена и раскрыта, если опять обновить страницу, то опять только выделена но не раскрыта. И так можно до бесконечности.
В куках лежат переменные: ui-dynatree-cookie-active и ui-dynatree-cookie-expand

В ui-dynatree-cookie-active всегда значение 1, а вот ui-dynatree-cookie-expand понятно что если раскрывается то значение 1, а если нет то пусто...

Далее все еще сложнее кликаем по Dir - 2.1 и тут стираются ui-dynatree-cookie-active и ui-dynatree-cookie-expand, даже не пустые значения а полное отсутствие переменных!!!

Естественно ничего не работает...

Помогите пожалуйста подскажите где я что упускаю...
Ответить с цитированием
  #2 (permalink)  
Старый 23.03.2009, 04:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
По идее "persist: true" включает работу кукисов для запоминания пути раскрытых ветвей дерева
т.е. в кукисах сохраняется информация о том, какие папки раскрыты в данный момент. Я правильно тебя понял?
Кроме того, в документации есть примечание "the nodes must have a key defined. Also, it will not work with lazy nodes".
Пример на сайте у меня работает, можешь дать ссылку на свою страничку (если не поможет)?
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2009, 10:28
Интересующийся
Отправить личное сообщение для ast-ross Посмотреть профиль Найти все сообщения от ast-ross
 
Регистрация: 19.03.2009
Сообщений: 11

Сообщение от x-yuri Посмотреть сообщение
т.е. в кукисах сохраняется информация о том, какие папки раскрыты в данный момент. Я правильно тебя понял?
Абсолютно!

Пример здесь: http://www.telemedicine.kz/tree/
Скачать: http://www.telemedicine.kz/tree/tree.zip

Сообщение от x-yuri Посмотреть сообщение
the nodes must have a key defined. Also, it will not work with lazy nodes
Ну так ключи у меня определены key: "1" и key: "2" для директорий. Пробовал определить и для файлов, эффекта - 0. Да и потом, я ведь не использую в своем примере lazy-Load, вся структура дерева определена сразу.

Для чистоты эксперимента заново скачал библиотеку dynatree-0.4.0, ничего не меняя не в стилях не в расположении элементов выложил следующее:
в /tree/jquery: jquery.cookie.js jquery/jquery.js ui.core.js
в /tree/src: - jquery.dynatree.js и директория skin c ui.dynatree.css и фалами картинок (иконок) для дерева.

Создал в /tree/src файл mytree.js:
$(function(){
  $("#tree").dynatree({
    title: "tree root",
    rootVisible: true,
    persist: true,
    children: [
      {title: "Dir - 2", isFolder: true, key: "1",
      children: [
        {title: "Dir - 2.1", isFolder: true, key: "2", children: [{title:"File - 2.1.1", key: "211"}]},
        {title:"File - 2.1", key: "21"},
        {title:"File - 2.2", key: "22"},
        {title:"File - 2.3", key: "23"}
        ]}
      ]
  });
});


А вот index.html:
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <title>TEST</title>
        <script src='./jquery/jquery.js' type='text/javascript'></script>
        <script src='./jquery/ui.core.js' type='text/javascript'></script>
        <script src='./jquery/jquery.cookie.js' type='text/javascript'></script>
        <script src='./src/jquery.dynatree.js' type='text/javascript'></script>
        <script src='./src/mytree.js' type='text/javascript'></script>
        <link href='./src/skin/ui.dynatree.css' rel='stylesheet' type='text/css'>
    </head>
    <body>
        <div id="tree">&nbsp;</div>
    </body>
</html>


Все равно не работает. Все взято с библиотеки. Может в ней дело?
Качал здесь: http://code.google.com/p/dynatree/downloads/list
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2009, 11:00
Интересующийся
Отправить личное сообщение для ast-ross Посмотреть профиль Найти все сообщения от ast-ross
 
Регистрация: 19.03.2009
Сообщений: 11

В общем похоже это баг в библиотеке dynatree-0.4.0.zip
так как скачав dynatree-0.3.0_20081207.zip все заработало.
Правда старая версия библиотеки хранит только одну куку ui-dynatree-cookie по этому открывать открывает, но не запоминает что было выделено.
Ответить с цитированием
  #5 (permalink)  
Старый 24.03.2009, 04:54
Интересующийся
Отправить личное сообщение для ast-ross Посмотреть профиль Найти все сообщения от ast-ross
 
Регистрация: 19.03.2009
Сообщений: 11

Вчера написал bug report Мартину, смотрю сегодня уже лежит версия 0.4.1
http://code.google.com/p/dynatree/downloads/list
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск