在JointJS中仅选择特定单元格

时间:2016-05-27 08:34:51

标签: javascript jquery jointjs

想要更改单元格的attr我点击...例如,如果我点击一个单元格,它应该更改其属性...就像颜色变为红色。

下面的代码工作正常...但是当我点击另一个单元格时,红色填充应该只应用于那个,并且所有剩余单元格的红色填充应该像以前一样恢复到默认值。 / p>

var graph = new joint.dia.Graph;

var paper = new joint.dia.Paper({
    el: $('#myholder'),
    width: 600,
    height: 200,
    model: graph,
    gridSize: 1
});
 var rect = new joint.shapes.basic.Rect({
        position: { x: 100, y: 100 },
        size: { width: 100, height: 30 },
        attrs: { rect: { fill: 'blue' }, text: { text: 'my box', fill: 'white' } }
    });

 var rect2 = new joint.shapes.basic.Rect({
    position: { x: 20, y: 30 },
    size: { width: 150, height: 30 },
    attrs: { rect: { fill: 'white' }, text: { text: 'my box2', fill: 'blue' } }
});

rect2.translate(300,30);

var link = new joint.dia.Link({
    source: { id: rect.id },
    target: { id: rect2.id }
});

graph.addCells([rect, rect2, link]);

 paper.on('cell:pointerdown', function (cellView) {

              cellView.model.attr({rect: { fill: 'red' }});

                });

//正在寻找将剩余单元格的所有属性重置为默认值(就像之前一样)的一些事情,当我点击另一个节点时...当前它将每个节点的颜色变为红色,我点击。 / p>

1 个答案:

答案 0 :(得分:1)

  1. 从图表中获取所有元素

  2. 更改回原始颜色

  3. 将cellview更改为红色

    paper.on('cell:pointerdown', function (cellView) {
         _.each(graph.getElements(), function(element) {
             element.attr({
                      rect: { fill: 'white' }
             });   
          });
         cellView.model.attr({rect: { fill: 'red' }});    
    

    });

  4. 记得我在_.each循环中使用了underscore.js。