2011-05-24 4 views
6

Tengo una funcionalidad personalizada para check_move:.?.bind ("move_node.jstree", .. -> data.rslt.obj indefinidos ¿Cómo conseguir datos del nodo

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;   
       } 

     } 
    }, 

Esto parece funcionar según lo previsto . que luego tratar de unirse al evento "move_node" para actualizar mi base de datos:..

.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")); 
    } 
}) 

Esto se traduce en un error data.rslt.obj no está definido estoy realmente en la pérdida de qué hacer, Me he vinculado a múltiples eventos antes y así es como lo he hecho.

¿Cómo puedo obtener atributos de nodo, etc. después del evento move_node, si data.rslt.obj no funciona?

Oh, el controller.moveNode() es una de mis propias funciones, así que no solo copie y pegue si está intentando aprender jstree.

Respuesta

10

Encontré la respuesta a mi pregunta poco después de preguntar sobre ella (típica).

Uno debe usar data.rslt.o.attr ("id") en lugar de -.obj.- Una incoherencia extraña si me preguntas.

Eliminaría esta publicación, pero creo que podría ser un problema bastante común. Si alguien piensa lo contrario, siéntase libre de eliminar.

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

return true; 

próxima vez que tratar de hacerlo de esta manera:

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