Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2010, 22:02
Интересующийся
Отправить личное сообщение для Yurok_shnurok Посмотреть профиль Найти все сообщения от Yurok_shnurok
 
Регистрация: 28.11.2010
Сообщений: 16

проблемы с jsTree
Доброго времени суток!
Пытался разобраться сам с этим плагином, но так как знаний javascript не хватает для этого, решил обратиться к знающим людям. Сам я программирую на ActionScript, и я слышал, что эти два языка похожи.
Мне нужно создать дерево, с подгрузкой данных с сервера, и вставить checkbox`ы, и после того как пользователь отметил какие-нибудь элементы дерева. Сохранить эти данные.
Читал документацию, но она мне мало чем помогла. Непонятно еще то, что настройки прописываются разными способами. И какой из них подойдет для меня неизвестно. На данном этапе удалось сделать само дерево, которое берет данные с сервера.
Фрагмент кода файла test.php
echo '[{ "data" : "Parent", "children" : [ { "data" : "Component", "state" : "closed" } ], "state" : "closed" }, "asdas"]';

Сам код javascript
$(function () {
    $("#demo").jstree({
       "plugins" : ["themes", "json_data", "checkbox"],

        "json_data" : {
                "ajax":{
                     "url": "testClass.php",
                     "data" : function (n) {

                       return {
                        "operation" : "get_children",
                        "id" : n.attr ? n.attr("id").replace("node_","") : 1
                       };
                     }
                }
        }

       });
 });

Возникает вопрос, что возвращает функция в data? И "operation" : "get_children" - это вызов какой-то функции из самого плагина? Или это отправляется на сервер?

Быть может есть подробная документация по этому плагину? Разбор демонстрации для такого новичка как я не подходит. Буду очень рад если кто-нибудь мне поможет, в ответ могу только предложить помощь по ActionScript!
Ответить с цитированием
  #2 (permalink)  
Старый 30.11.2010, 22:21
Интересующийся
Отправить личное сообщение для Yurok_shnurok Посмотреть профиль Найти все сообщения от Yurok_shnurok
 
Регистрация: 28.11.2010
Сообщений: 16

Вроде с подгрузкой данных разобрался, добавил checkbox`ы. Теперь появился вопрос, можно ли отслеживать изменения состояния checkbox`а, и сразу отсылать через ajax данные на сервер?
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2010, 17:20
Интересующийся
Отправить личное сообщение для Yurok_shnurok Посмотреть профиль Найти все сообщения от Yurok_shnurok
 
Регистрация: 28.11.2010
Сообщений: 16

Или такое невозможно?
Ответить с цитированием
  #4 (permalink)  
Старый 09.12.2010, 17:51
Интересующийся
Отправить личное сообщение для Yurok_shnurok Посмотреть профиль Найти все сообщения от Yurok_shnurok
 
Регистрация: 28.11.2010
Сообщений: 16

Попробовал написать в настройках jstree такой вариант
.bind("change_state.checkbox.jstree", function (e, data){
          //alert(data);
        })

После просмотра всех свойств объекта data, нашел строку со списком, но никак не могу выделить id выбранного элемента, хотя при открытии jstree в демо, есть строка
.bind("create.jstree", function (e, data) {
            $.post(
                "./server.php",
                {
                    "operation" : "create_node",
                    "id" : data.rslt.parent.attr("id").replace("node_",""),
                    "position" : data.rslt.position,
                    "title" : data.rslt.name,
                    "type" : data.rslt.obj.attr("rel")
                },
                function (r) {
                    if(r.status) {
                        $(data.rslt.obj).attr("id", "node_" + r.id);
                    }
                    else {
                        $.jstree.rollback(data.rlbk);
                    }
                }
            );
        })

"id" : data.rslt.parent.attr("id").replace("node_","") - как я понял здесь находиться id объекта, но в моем случае в объекте parent вообще нет никаких свойств.
Ответить с цитированием
  #5 (permalink)  
Старый 10.12.2010, 16:13
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

по документации -- http://www.jstree.com/documentation

В JSON-ответе кроме свойства data еще передавайте св-во attr -- а там уже все атрибуты, которые необходимо добавить элементу дерева
Ответить с цитированием
  #6 (permalink)  
Старый 20.12.2010, 18:07
Интересующийся
Отправить личное сообщение для Yurok_shnurok Посмотреть профиль Найти все сообщения от Yurok_shnurok
 
Регистрация: 28.11.2010
Сообщений: 16

Спасибо, е1f!

Мне еще нужно как-то сохранять выбранные пользователем варианты. У меня задача такая, пользователь выбирает товары, которые представлены в виде дерева, и после того как он пометил checkbox`ы, кликает кноппку "сохранить", и выбранные товары нужно сохранить в базе данных. Но я никак не могу добраться до этого checkbox`a, чтобы узнать его состояние. В документации мало, что написанно про эти checkbox`ы. Я пробовал такой код
.bind("change_state.check_box.jstree", function (e, data){
                    
          alert(data.args[0].attr("id"));
          
        })
При раскрытии ветки дерева, у меня выводит сообщение какой это id, но при изменении состояния чекбокса, происходит ошибка. Быть может есть более легкий способо решить такого рода задачу?
Ответить с цитированием
  #7 (permalink)  
Старый 20.12.2010, 18:16
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

1. Вот тут смотрели?
2. Что это за тэг "change_state"?
3. Давайте небольшой, демонстрирующий проблему, пример, желательно доступный по внешней ссылке "на посмотреть".
Ответить с цитированием
  #8 (permalink)  
Старый 20.12.2010, 18:33
Интересующийся
Отправить личное сообщение для Yurok_shnurok Посмотреть профиль Найти все сообщения от Yurok_shnurok
 
Регистрация: 28.11.2010
Сообщений: 16

Из-за не знания языка js, я даже не знаю, что это за bind(). Как я предполагал, эта функция отслеживает события дерева. Пример у меня на локалке, впринципе я его составил из примера, который идет в комплекте с jsTree.
Ответить с цитированием
  #9 (permalink)  
Старый 20.12.2010, 19:39
Интересующийся
Отправить личное сообщение для Yurok_shnurok Посмотреть профиль Найти все сообщения от Yurok_shnurok
 
Регистрация: 28.11.2010
Сообщений: 16

Вообще с помощью jsTree v 1.0rc2 возможно решить такую задачу? Или я зря трачу время?
Ответить с цитированием
  #10 (permalink)  
Старый 20.12.2010, 19:53
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от Yurok_shnurok Посмотреть сообщение
Из-за не знания языка js, я даже не знаю, что это за bind().
Ну, тут уж помочь ничем нельзя.

Сообщение от Yurok_shnurok Посмотреть сообщение
Вообще с помощью jsTree v 1.0rc2 возможно решить такую задачу? Или я зря трачу время?
Понятия не имею, что за задача. Выложите минимальный тестовый пример, в котором видно проблему.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы в ИЕ при динамическом создании элементов Арсений Элементы интерфейса 5 20.08.2010 15:57
Добрый день возникли проблемы при установке фокуса в Mozilla Даниэль Ноубл Общие вопросы Javascript 7 24.04.2010 00:50
jQuery, jsTree - обновление дерева через ajax extremum.func jQuery 2 09.11.2009 14:48
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47