首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态渲染美人鱼流程图?

如何动态渲染美人鱼流程图?
EN

Stack Overflow用户
提问于 2020-12-09 15:25:41
回答 1查看 1.4K关注 0票数 3

我正在使用mermaid库构建流程图。它的工作原理是在一个块中有一个伪代码--具有特殊语法的命令,在此基础上在块中构建流程图。

我希望能够动态地更改块的内容,并且脚本每次都会重新构建块图。

如何设置初始化?也许我应该在设置中添加一些回调函数?

我是这样初始化的:

代码语言:javascript
复制
mermaid.init({/*what setting parameters should be here?*/}, ".someClass"/*selector*/);

但该脚本不会呈现任何新命令。它只呈现加载文档时存在的命令。

换句话说,我想在线编辑流程图。

代码语言:javascript
复制
function edit() {
  const new_mermaid = document.createElement("div");
  new_mermaid.classList.add("mermaid");
  new_mermaid.classList.add(".someClass");
  /*new_mermaid.innerHTML =
            `graph TD
   1[point 1] --> 2[point 2]`;*/
  // it doesn't work when I append the new   element dynamically! 
  new_mermaid.innerHTML = document.querySelector(".mermaid").innerHTML;
  // it works always.
  document.body.append(new_mermaid);
  /* document.querySelector(".mermaid").innerHTML = 
            `
    graph TD
    A --> B`*/
  // it doesn’t work with event listener
}
edit(); // it works
document.body.addEventListener("click", edit)
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>
  // how to do it correctly?
  mermaid.init({
    noteMargin: 10
  }, ".someClass");
</script>

<div class="mermaid someClass">
  graph TD
  1--> 2
  3 --> 2
  2 --> 1
</div>

EN

回答 1

Stack Overflow用户

发布于 2020-12-11 20:20:01

看起来,我知道答案。请看下面的解决方案:

代码语言:javascript
复制
  document.querySelector("button").addEventListener("click", (e) => {
  const output = document.querySelector(".flowchart");
  if (output.firstChild !== null) {
    output.innerHTML = "";
  }
  const code = document.querySelector(" textarea").value.trim();
  let insert = function (code) {
    output.innerHTML = code;
  };
  mermaid.render("preparedScheme", code, insert);
});
代码语言:javascript
复制
   <script src="https://unpkg.com/mermaid@7.1.0/dist/mermaid.min.js"></script>

<p>Input your data:</p>
<div class="input">
  <textarea style="width:300px; height:200px"></textarea>
  <br>
  <button>render</button>
</div>
<div>
  <p>output:</p>

  <div class="render_container" style = "width:300px; height:200px; border:thin solid silver" >
      <div class="flowchart"></div>
    </div>
  </div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65212332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档