我想实现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被定义并且节点被复制,正如它应该的那样。
我做错了什么或者这是一个错误?有没有解决办法?
感谢您的帮助! 塔尼娅
答案 0 :(得分: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;
}
}
}
}