javascript - 如何在jointJS中创建表格元素并向其添加动态文本

标签 javascript jointjs

我找到了一个 JS fiddle ,用于使用 jointJS 创建表格,但我无法向其中添加文本。

var graph = new joint.dia.Graph;
var paper = new joint.dia.Paper({
  el: $('#paper'),
  width: 600,
  height: 600,
  gridSize: 20,
  model: graph,
  linkPinning: false,
  defaultLink: new joint.dia.Link({
    z: 2
  }),
  validateConnection: function(cellViewS, magnetS, cellViewT, magnetT, end, linkView) {
    var connectedView = end === 'target' ? cellViewT : cellViewS;
    if (connectedView instanceof joint.dia.LinkView) return false;
    if (cellViewT === cellViewS || magnetS === magnetT) return false;
    return true;
  }
});

joint.shapes.basic.Table = joint.shapes.basic.Generic.extend({

  markup: [
    '<g class="rotatable"><g class="scalable"><rect class="body"/></g>',
    '<g class="ports">',
    '<rect class="port11" port="11"/><rect class="port12" port="12"/><rect class="port13" port="13"/>',
    '<rect class="port21" port="21"/><rect class="port22" port="22"/><rect class="port23" port="23"/>',
    '<rect class="port31" port="31"/><rect class="port32" port="32"/><rect class="port33" port="33"/>',
    '</g>',
    '</g>'
  ].join(''),


  defaults: joint.util.deepSupplement({

    type: 'basic.Table',
    z: 2,
    attrs: {
      '.body': {
        width: 100,
        height: 100,
        stroke: 'blue',
        fill: 'lightblue'
      },
      '.ports > rect': {
        'ref-width': '33%',
        'ref-height': '33%',
        stroke: 'lightgray'
      },
      '.port11': {
        'ref-x': 0,
        'ref-y': 0,
        magnet: 'passive'
      },
      '.port12': {
        'ref-x': 0.33,
        'ref-y': 0,
        magnet: 'passive'

      },
      '.port13': {
        'ref-x': 0.66,
        'ref-y': 0,
        magnet: 'passive'
      },
      '.port21': {
        'ref-x': 0,
        'ref-y': 0.33,
        magnet: 'passive'

      },
      '.port22': {
        'ref-x': 0.33,
        'ref-y': 0.33,
        magnet: 'passive'

      },
      '.port23': {
        'ref-x': 0.66,
        'ref-y': 0.33,
        magnet: 'passive'

      },
      '.port31': {
        'ref-x': 0,
        'ref-y': 0.66,
        magnet: 'passive'

      },
      '.port32': {
        'ref-x': 0.33,
        'ref-y': 0.66,
        magnet: 'passive'
      },
      '.port33': {
        'ref-x': 0.66,
        'ref-y': 0.66,
        magnet: 'passive'

      }
    }

  }, joint.shapes.devs.Model.prototype.defaults)
});

var model = new joint.shapes.basic.Table({
  size: {
    width: 100,
    height: 100
  }
});

graph.addCell([
  model.clone().position(100, 100).attr('.port31/magnet', true).attr('.port23/magnet', true),
  model.clone().position(300, 200).attr('.port33/magnet', true).attr('.port11/magnet', true)
]);

jsfiddle 的链接 http://jsfiddle.net/kumilingus/h6125gu7/

我想实现如下所示的功能,其中可能有多个表格元素,每个元素具有不同的文本。

var model = new joint.shapes.basic.Table({
  size: {
    width: 100,
    height: 100
  }
});
graph.addCell([
  model.clone().position(100, 100).attr('.port31/text', 'some text1').attr('.port23/text', 'some text2')
]);

有没有其他方法可以在 jointJS 中创建一个表,我可以在其中创建一个表 显示一些统计数据?

最佳答案

实际上还有另一种方法如何使用 jointjs 创建表。 您可以尝试此处定义的joint.shapes.basic.Table:

https://codepen.io/vladimirtalas/pen/MrymjB

关于javascript - 如何在jointJS中创建表格元素并向其添加动态文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48417343/

相关文章:

javascript - AngularJS : How do access parent controller's scope item from the child directive?

javascript - Jointjs 类型定义

javascript - 我可以像任何其他库一样将 JointJS 作为 AngularJS 模块注入(inject)吗?

backbone.js - 具有端口和工具项(删除、设置等)的 JointJS 元素

json - 在 jointjs-Rappid 中向 basic.Image 类型的模板形状添加标签

javascript - 如何自定义您的网站在 iframe 中的显示方式

javascript - JS尝试添加新的输入框和按钮

javascript - 重置密码 POST 刷新页面而不张贴

javascript - 如何将选定的复选框值获取到脚本中的变量

javascript - 在 jointjs 中,如何将每个输入的连接数限制为一个?