0

我想用我可以检查节点是否被移动或复制以及用户是否有权这样做的功能来实现 crrm.move.check_move。我的代码如下所示:

var _isUserHasRightToMoveNodes = false; // set depending on user rights
var _isUserHasRightToCopyNodes = true; // set depending on user rights

var _jsTreePlugins = ["themes", "html_data", "ui"];
if ((_isUserHasRightToMoveNodes) || (_isUserHasRightToCopyNodes)) {
    _jsTreePlugins.push("dnd");
    _jsTreePlugins.push("crrm");
}

$( this ).jstree({
     plugins: _jsTreePlugins,
     ...,
     crrm : {
        "move" : {
            "check_move" : function( m ) {
                // wenn der Knoten verschoben wird
                if ((!_isUserHasRightToMoveNodes) && ((m.cy == null) || (!m.cy)))
                return false;
                // wenn der Knoten kopiert wird
                if ((!_isUserHasRightToCopyNodes) && (m.cy != null) && (m.cy))
                    return false;
                return true;
             }
        }
     }
});

当我复制一个节点时,它似乎不可能(红十字图标),但它仍在被复制(应该如此)。

我已经用 firebug 进行了调试,发现 m.cy 仅在节点被删除时才定义,而不是在鼠标悬停在其他节点上时定义,因此是红十字图标。但是当然,一旦它被删除,m.cy 就会被定义并复制节点,就像它应该的那样。

我做错了什么还是这是一个错误?有什么解决方法吗?

谢谢你的帮助!塔尼亚

4

1 回答 1

0
Your return is not as expected - Sample code below should help you:

"crrm": {
    "move" : {
         "check_move" : 
             function(tree)
             {
               //check the condition to enable the drag
                   if(tree.r.attr("id") !=  ...){   
                        return {
                               after : true,
                               before : false,
                               inside : false
                               }
                   }else{
                    return false;
                   }       
              }            
          }
}
于 2014-02-14T17:28:44.937 回答