#jstree
#jstree
Вопрос:
У меня есть настраиваемая функциональность для 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.
Ответ №1:
Я нашел ответ на свой собственный вопрос довольно скоро после того, как спросил об этом (типично).
Нужно использовать data.rslt.o.attr(«id») вместо -.obj.- Странное несоответствие, если вы спросите меня.
Я бы удалил это сообщение, но я думаю, что это может быть довольно распространенной проблемой. Если кто-то думает иначе, не стесняйтесь удалять.
Ответ №2:
if(!p)
return false;
if(m.cr===-1)
return false;
return true;
в следующий раз попробуйте сделать это так:
return (p amp;amp; m.cr !== -1);