我在json(我用于另一个程序)中有一个带有“逻辑”表示的图形,图形表示在Angular组件中呈现的MxGraph中。
我正在使用XML作为单元格的值,如本Documentation中所建议。
虽然对我来说,截获mxgraph中的更改并更新json非常容易,但我无法在图中的json中传播更改。
一个愚蠢的例子是,如果我更改“标签”的值。我可以这样做:
editor.graph.model.cells[2].value.setAttribute('label', "Test");
但是只有在发生另一个更新(例如,移动图形中的单元格)时,此更改才可见。
我试图触发一个mxEvent.CHANGE事件,但是我无法正确设置编辑和更改,以便它们传播到图形。我也尝试创建一个新的mxGeometryChange,但又失败了...
在此先感谢您的提示...
答案 0 :(得分: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向前和向后引用的问题...我可能会在另一个问题上提出发布...
答案 1 :(得分:0)
解决方案对我有用。
我们应该使用mxGraphModel.setValue
。
然后,更改就可见了。
mxCell.setValue
无法显示。
谢谢!