.bind(move_node.jstree,.. -> data.rslt.obj undefined. Как получить данные узла?

У меня есть специальные функции для 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, если data.rslt.obj не работает?

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


person T.Kaukoranta    schedule 24.05.2011    source источник


Ответы (2)


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

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

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

person T.Kaukoranta    schedule 25.05.2011

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

return true;

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

return (p && m.cr !== -1);
person Yan    schedule 12.04.2012