如何以编程方式更改mxCell值?

问题描述 投票:1回答:1

[我在json中有一个带有“逻辑”表示的图形(我用于另一个程序),图形表示在MxGraph中,并在Angular组件中呈现。

我正在使用XML作为单元格的值,如本Documentation中所建议。

虽然对我来说,截获mxgraph中的更改并更新json很容易,但我无法在图中的json中传播更改。

一个愚蠢的例子是,如果我更改“标签”的值。我可以这样做:

editor.graph.model.cells[2].value.setAttribute('label', "Test");

但是此更改仅在发生另一个更新(例如,移动图形中的单元格)时可见。

我试图触发mxEvent.CHANGE事件,但是我无法正确设置编辑和更改,以使它们传播到图形。我也尝试创建一个新的mxGeometryChange,但是又失败了...

提前感谢您的任何提示...

javascript typescript angular7 mxgraph
1个回答
0
投票

我找到了一个解决方案,即使我无法使用它……这也是我添加的功能:

    // To use it call:
    //       graph.updateCell(cell, "newlabel");
    graph.updateCell = function(cell, label)
    {
      if (cell !== null) {
        cell.value.setAttribute('label', label);

        this.model.beginUpdate();               
        try
        {
          //this.cellUpdated(cell);
          this.model.setValue(cell, cell.value);
          this.fireEvent(new mx.mxEventObject(mx.mxEvent.LABEL_CHANGED,
              'cell', cell, 'ignoreChildren', false));
        }
        finally
        {
          this.model.endUpdate();
        }

        return cell;
      } else return null;
    };

我的问题是我无法使用此功能,但此时的问题有所不同。原因是我想从另一个未运行mxgraph的组件中使用此函数,这就是我现在的工作...这便成为有关Angular ngModel向前和向后引用的问题...我可能会在另一个问题上提出发布...

© www.soinside.com 2019 - 2024. All rights reserved.