【问题标题】:jsPlumb removes Straight connection when calling setPaintStyle()jsPlumb 在调用 setPaintStyle() 时删除了直接连接
【发布时间】:2013-03-16 18:22:28
【问题描述】:

我将 jsPlumb 用于一个中等规模的项目。尽管文档在扎实的解释方面很薄弱,但我已经设法完成了该项目,现在我已准备好交付它。

就在交货日期之前,我被要求将连接线设为笔直而不是弯曲。我认为这就像在 jsPlumb 连接方法中添加一个关键字一样简单,例如:jsPlumb.connect({ connector: 'Straight'... })... 确实如此。那么有什么问题呢?

我正在处理的这个项目必须允许用户“选择”连接线,这样他们就可以按“删除”按钮来清除他们选择的连接。我允许用户通过调用 jsPlumb 的 setPaintStyle() 方法来选择连接,如下所示:

// Select/Deselect each connection on click
jsPlumb.bind('click', function (connection, e) {
   e.preventDefault();

   connection.setPaintStyle({ 
      strokeStyle: 'red'
   });
});

仅当线条弯曲时(jsPlumb 默认)才能按预期工作。

但是,如果将connect() 方法中的connector 选项更改为"Straight",则垂直的连接线(它们的端点彼此交叉) 当我点击它们时就会消失。其他端点没有直接交叉的直线不存在这个问题。

删除连接器选项,或将其值设置为“bezier”,或者在选项设置为“直”时,或者不会调用setPaintStyle()方法,然后点击的行保持在适当位置。

这是一个 jsBin 示例:jsPlumb setPaintStyle() with Straight lines bug

最初我认为这是我的应用程序中的一个错误,但在花费大量时间后,我已将问题追溯到 setPaintStyle() 方法。我很有信心这是一个 jsPlumb 错误,但我并不完全确定。在这一点上非常令人沮丧,因为唯一阻止我交付项目的是将笔触颜色更改为红色的能力。如果我能用直线完成这个简单的任务,那么我可以继续前进。

我考虑过自己定位 SVG 路径节点并以这种方式更改笔触颜色,但由于 jsPlumb 将 VML 用于 IE8(ie8 是此项目的要求),我不确定我可以做到这一点。有什么建议吗?

【问题讨论】:

    标签: javascript jquery canvas svg jsplumb


    【解决方案1】:

    对于可能遇到这个令人沮丧的 jsPlumb 错误的其他人。在整个周六都在寻找解决方案之后,我终于找到了解决这个问题的方法。

    我实际上并没有使用setPaintStyle() 方法来更改笔触颜色,而是使用了getPaintStyle()repaint() 方法的组合。这是一个固定的 jsBin 示例:http://jsbin.com/ogekot/7/edit

    jsPlumb.bind('click', function (connection, e) {
       e.preventDefault();
    
       connection.getPaintStyle().strokeStyle = '#CE322A';
       connection.repaint()
    });
    

    【讨论】:

    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多