0

如何在通过 urlParam 传递名称的 grapheditor 中打开本地文件?我尝试在 index.html 中使用此代码,但它不起作用。

      var editor = new EditorUi(new Editor(urlParams['chrome'] == '0', themes));

        try
        {
          editor.open(encodeURI(urlParams['xml']));
        }
        catch (e)
        {
          mxUtils.error('Cannot open ' + urlParams['xml'] +
            ': ' + e.message, 280, true);
        } 

提前致谢。

4

1 回答 1

2

我也必须这样做。如果您有一个在本地运行的服务器来提供您的文件,这将很有帮助。例如:

python -m SimpleHTTPServer 8000

此命令将启动一个简单的服务器,以便您的浏览器可以发送 AJAX 请求以从您的文件系统加载文件。

我必须假设以下设置:您在文件 index.html 的文件夹中运行 mxGraph,并且同一文件夹包含另一个包含您的 xml 的文件夹。像这样:

index.html
/xmls/1.xml
/xmls/2.xml
...

这是您执行命令以启动服务器。现在您可以在此处访问您的应用程序:localhost:8000/index.html

通过添加 GET 参数来识别硬盘驱动器上的文件,您是对的。

例如:localhost:8000/index.html?xml=1.xml

为了让这个例子正常工作,结构应该与 GraphEditor ( https://jgraph.github.io/mxgraph/javascript/examples/grapheditor/www/index.html ) 相当。克隆这个项目并使用它是一个好主意。

现在在您的 index.html 中,您可以添加如下内容:

function open_xml_on_init(editorUi) {
var xml_file_path = 'xml/' + urlParams['xml'];
if (urlParams['xml'] != null && urlParams['xml'].length > 0) {
    var splitted = xml_file_path.split('/');
    var only_name = splitted[splitted.length - 1];
    editorUi.editor.filename = only_name;
    var req = mxUtils.get(xml_file_path, mxUtils.bind(this, function (req) {
        if (req.request.status >= 200 && req.request.status <= 299) {
            if (req.request.response.length > 0) {
                editorUi.editor.graph.model.beginUpdate();
                try {
                    var xmlElem = mxUtils.parseXml(req.request.response).documentElement;
                    editorUi.editor.setGraphXml(xmlElem);

                }
                catch (e) {
                    console.error(e);
                }
                finally {
                    editorUi.editor.graph.model.endUpdate();
                }
            }
        }
    }));
}
}

在 index.html 的某个地方运行这个方法,你就可以开始了!

open_xml_on_init(editor_ui);
于 2017-07-04T22:27:03.493 回答