如何使锚点相对于在jsplumb中拖动的块进行移动?

问题描述:

我正在尝试使用拖放选项来构建流程图。用户应该能够从一个div中拖动一个元素并将其放到另一个div中。如何使锚点相对于在jsplumb中拖动的块进行移动?

现在我可以拖放。我已经给出了一个选项,以便在放下该块时,锚点应该出现在它们上面。而且我可以使用js铅锤将这些块与连接器连接起来。

我已经给出了拖放块的可拖动选项。问题是,只要我拖动连接的块,锚的位置不会改变。

如何进行更改,以便每当我拖动任何块时,其锚点和连接线也应拖动?

这里是我的代码: jsPlumb.ready(函数(){

var EndpointOptions = { 
    setDragAllowedWhenFull: true, 
    endpoint: "Dot", 
    maxConnections: 10, 

    paintStyle: { 
     width: 21, 
     height: 21, 
     fillStyle: '#666', 

    }, 
    isSource: true, 
    connectorStyle: { 
     strokeStyle: "#666" 
    }, 
    isTarget: true, 
    dropOptions: { 
     drop: function(e, ui) { 
      alert('drop!'); 
     } 
    } 


}; 



var count = 0; 
var x = ""; 
//Make element draggable 
$(".drag").draggable({ 
    helper: 'clone', 
    cursor: 'move', 
    tolerance: 'fit', 
    revert: true 
}); 

$(".droppable").droppable({ 
    accept: '.drag', 
    activeClass: "drop-area", 
    <!-- stop: function(event, ui) {}, --> 
    drop: function(e, ui) { 
     if ($(ui.draggable)[0].id !== "") { 


      x = ui.helper.clone(); 
      console.log("x" + JSON.stringify(x)); 
      ui.helper.remove(); 
      x.draggable({ 
       helper: 'original', 
       cursor: 'move', 
       containment: '.droppable', 
       tolerance: 'fit', 

       drop: function(event, ui) { 
        $(ui.draggable).remove(); 


       } 
      }); 


      x.appendTo('.droppable'); 


      x.addClass('clg'); 
      $(".clg").each(function() { 

       //alert("hello"); 
       jsPlumb.addEndpoint($(this), EndpointOptions); 

      }); 

     } 

     <!-- $(".clg").dblclick(function() { --> 

     <!-- //alert("hello"); --> 
     <!-- jsPlumb.addEndpoint($(this), EndpointOptions); --> 

     <!-- });  --> 
     jsPlumb.bind('connection', function(e) { 
      jsPlumb.select(e).addOverlay(["Arrow", { 
       foldback: 0.2, 
       location: 0.65, 
       width: 25 
      }]); 
     }); 
     console.log("out x" + JSON.stringify(x)); 

    } 

}); 
}); 

您可以使用此jsPlumb.repaintEverything();

+0

感谢,但同时拖动块,我们不能拖到终点 –

+0

你应注意什么?能够,我创建一个新的块时只使用这个 jsPlumb.draggable(id,{ containment:true });所以你可能想玩,直到它的工作 – Stephan231

在这里,我产生每个块的ID和添加。根据各自的ID端点 这里是我的变化:

if(null == ui.draggable.attr('id')){ 
      if(ui.draggable.attr('class').indexOf('rule') != -1){ 
       clone.attr('id', 'rule_' + i); 
       jsPlumb.addEndpoint(clone,{anchors: ["Left"]}, EndpointOptions); 
      } else { 
       clone.attr('id', 'event_' + i); 
       jsPlumb.addEndpoint(clone, {anchors: ["Left"]}, EndpointOptions); 
      } 
i++;