4

我从 Git 下载了https://github.com/jgraph/mxgraph开源代码,这个应用程序保存功能在本地不起作用。是否有可能在本地运行保存功能?是否需要任何配置?请帮我。

在此处输入图像描述

保存按钮后单击以下错误消息

在此处输入图像描述

4

2 回答 2

3

我提供了用于本地保存和上传已保存文件的代码片段

导出当前图形对象的 xml 的代码

let encoder = new mxCodec();
let result = encoder.encode(graph.getModel());
let xml = mxUtils.getXml(result);
//workaround for the xml export, do not include the <mxGraphModel> tags
xml = xml.substring(xml.indexOf("<mxGraphModel>")+"<mxGraphModel>".length, xml.indexOf("</mxGraphModel>"));

上传 xml 以重新生成图形的保存状态的代码

let doc = mxUtils.parseXml(xml);
let codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());
let elt = doc.documentElement.firstChild;
let cells = [];
while (elt != null)
{   
    let cell = codec.decode(elt)
    if(cell != undefined){
            if(cell.id != undefined && cell.parent != undefined && (cell.id == cell.parent)){
                elt = elt.nextSibling;
                continue;
            }
            cells.push(cell);
    }
    elt = elt.nextSibling;
}
graph.addCells(cells);
于 2019-06-24T11:00:01.070 回答
2

您可以使用 IO 包中的 mxCodec 类在本地保存。 在此处查看示例代码。我不知道如何将它绑定到那个特定的按钮,但是找到当你点击保存时调用的函数,并用编码为 xml 所需的三行添加/替换它。

至于如何让那个 xml 代码保存为文件,我不确定。当您修改保存按钮功能时,您可能会发现该代码。简单的方法是创建一个 div 并将其 innerhtml 替换为 xml 数据,然后复制并自己保存。

于 2019-06-21T01:40:44.113 回答