我正在尝试加载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函数中添加一个断点并加载页面。然后,您可以验证是否可以找到对象。

10-07 13:49