.bind“ move_node.jstree”,..-> data.rslt.obj未定义如何获取节点数据?

问题描述

| 我为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未定义。我真的无所适从,我之前绑定过多个事件,而这就是我的工作方式。 如果data.rslt.obj不起作用,如何在move_node事件后获取节点属性等? 哦,controller.moveNode()是我自己的函数之一,所以如果您想学习jstree,请不要只复制粘贴。     

解决方法

问了一下(典型)后不久,我就找到了自己问题的答案。 必须使用data.rslt.o.attr(\“ id \”)而不是-.obj。-如果您问我一个奇怪的矛盾之处。 我将删除此帖子,但是我认为这可能是一个非常普遍的问题。如果有人有其他想法,请随时删除。     ,
if(!p)
  return false;
if(m.cr===-1)
  return false;

return true;
下次尝试这样做:
return (p && m.cr !== -1);