更改JointJs Paper的交互属性?

时间:2015-08-18 13:13:23

标签: javascript backbone.js jointjs

最近我需要制作一个JointJs图的交互模式。众所周知,纸质对象的创建是这样的:

    paper = new joint.dia.Paper({
      el: $(#myDiagram),
      width: this.props.width,
      height: this.props.height,
      model: this.state.graph,
      gridSize: 1,
      interactive: false
    });

您可以使用所需的选项创建新论文。在这种情况下,交互(“交互”标志)设置为false。遗憾的是,纸质对象上没有get,attrs和set方法。我想创建一个更改交互标志的按钮。它的位置在纸张内的选项对象中。手动访问会更改值,但这根本不会反映纸张。每次更改交互时,唯一的解决方案是重新初始化吗?先谢谢。

3 个答案:

答案 0 :(得分:0)

您是否已尝试致电

paper.render()
更改值后

答案 1 :(得分:0)

我对此问题的解决方法如下:

_.forEach(this.graph.getLinks(), function (link:joint.dia.Link) {
    self.paper.findViewByModel(link).options.interactive = {
        vertexAdd: true,
        vertexMove: true,
        vertexRemove: true,
        arrowheadMove: false
    }
});

(我使用David Durman关于这个问题的答案:https://groups.google.com/forum/#!searchin/jointjs/interactive/jointjs/h7tVqVUTd2E/VfA1BaQaFFAJ

这使我可以更改所有链接的交互性(特别是更改顶点),而无需再次进行纸张初始化。

答案 2 :(得分:0)

这已经改变并且变得更好。我正在使用jointjs 1.0.3,现在这对我有用:

  edit() {
    const self = this
    this.graph.getCells().forEach(function (cell) {
      const c = cell.findView(self.paper)
      c.setInteractivity(true)
    })
  }