.bind ("move_node.jstree", .. -> data.rslt.obj undefined. Как получить данные узла? - PullRequest
6 голосов
/ 24 мая 2011

У меня есть пользовательский функционал для check_move:

crrm : {
        move : {
            "check_move" : function (m) {

                var p = this._get_parent(m.o);
                if(!p) 
                    return false;
                if(m.cr===-1)
                    return false;
                return true;        
                }

        }   
    },

Кажется, это работает как задумано.Затем я пытаюсь привязать событие «move_node» для обновления моей базы данных:

.bind("move_node.jstree",function(event,data){
    if(data.rslt.obj.attr("id")==""){
         /* I omitted this snippet from this paste - it's really long and it basically does the same thing as below, just gets the node's id in a more complicated way*/
    } else { 
        controller.moveNode(data.rslt.obj.attr("id"),data.inst._get_parent(this).attr("id"),data.rslt.obj.attr("rel"));
    }   
})

Это приводит к ошибке.data.rslt.obj не определенЯ действительно в растерянности от того, что делать, я связывал с несколькими событиями раньше, и вот как я это сделал.

Как я могу получить атрибуты узла и т.д. после события move_node, если данные.rslt.obj не работает?

О, controller.moveNode () - одна из моих собственных функций, поэтому не просто копируйте и вставляйте, если вы пытаетесь изучить jstree.

Ответы [ 2 ]

10 голосов
/ 25 мая 2011

Я нашел ответ на свой вопрос довольно скоро после того, как спросил об этом (типично).

Нужно использовать data.rslt.o.attr ("id") вместо -.obj.- Anстранное несоответствие, если вы спросите меня.

Я бы удалил этот пост, но я думаю, что это может быть довольно распространенной проблемой.Если кто-то думает иначе, не стесняйтесь удалять.

2 голосов
/ 13 апреля 2012
if(!p)
  return false;
if(m.cr===-1)
  return false;

return true;

в следующий раз попробуйте сделать это так:

return (p && m.cr !== -1);
...