我正在尝试加载XML文件并将其转换为mxGraph
,但是当我调用编解码器时,它不会更新图形。
这是我的功能,容器是我的图形所在的div:
function loadXml(container, xml)
{
// Checks if the browser is supported
if (!mxClient.isBrowserSupported())
{
// Displays an error message if the browser is not supported.
mxUtils.error('Browser is not supported!', 200, false);
}
else
{
// Creates the graph inside the given container
var graph = new mxGraph(container);
// Adds rubberband selection to the graph
new mxRubberband(graph);
var doc = mxUtils.parseXml(xml);
var codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());
}
};
PS:我检查了
doc.documentElement
,它似乎是正确的。 最佳答案
由于mxGraph是通过Webpack的exports-loader导入的,因此我弹出了同样的问题,但是我相信在其他情况下也可能发生。mxCodec.prototype.decode(doc, graphModel)
函数希望所有的mxGraph对象/构造函数都可以通过window[objectName]
访问器在全局范围内使用。
如果将mxGraph封装在模块中,则对象不在全局范围内,并且解码失败。
要确认这是问题所在,请在mxGraph的mxCodec.prototype.decode
函数中添加一个断点并加载页面。然后,您可以验证是否可以找到对象。