Javascript 更改:使用joint.js为纸张中的每个单元格定位事件

Javascript 更改:使用joint.js为纸张中的每个单元格定位事件,javascript,jointjs,Javascript,Jointjs,单击纸张的空白处,将添加一个新单元格: paper.on({ 'blank:pointerdblclick': function(event, x, y) { var rect = new joint.shapes.app.Standard({ position: { x: x, y: y }, size: { width: 100, height: 80 }, }); graph.addC

单击纸张的空白处,将添加一个新单元格:

paper.on({
    'blank:pointerdblclick': function(event, x, y) {
        var rect = new joint.shapes.app.Standard({
            position: { x: x, y: y },
            size: { width: 100, height: 80 },
        });

        graph.addCell(rect);

        rect.on('change:position', function() {
            paper.fitToContent();
        });
    }
});
但是,由于
change:position
事件是在
blank:pointerdblclick
事件中设置的,因此它只是为新元素激发。但是对于本文中存在的所有单元格,都应该设置它。 因此,要移动纸张上的任何单元格,应该执行fitToContent()函数

我该怎么做

注意:标准元素的定义如下:

joint.shapes.app.Standard = joint.shapes.basic.Generic.extend({
    markup: '<rect/><circle class="port-top"/><circle class="port-bottom"/><circle class="port-right"/><circle class="port-left"/><text/>', 
    defaults: joint.util.deepSupplement({
        type: 'app.Standard',
        attrs: {
            ...
        }
    }, joint.shapes.basic.Generic.prototype.defaults)
});
joint.shapes.app.Standard=joint.shapes.basic.Generic.extend({
标记:“”,
默认值:joint.util.deepaddress({
键入:“app.Standard”,
属性:{
...
}
},joint.shapes.basic.Generic.prototype.defaults)
});
在设置处理程序时使用并迭代它们

graph.getElements().forEach(function(element) {
    element.on('change:position', function() {
        paper.fitToContent();
    });