如何获取 CodeMirror-6 编辑器的文本值

Mar*_*arc 4 javascript codemirror-6

我正在使用 CodeMirror 来检查是否可以在我们的网站中使用它来允许用户编写 C# 脚本。我可以轻松制作一个示例,但我找不到任何有关获取编辑器的文本值以通过表单发送的文档。

JS 来源:

import {StreamLanguage} from "@codemirror/language"
import {csharp} from "@codemirror/legacy-modes/mode/clike"

import {EditorView, basicSetup} from "codemirror"

let editor = new EditorView({
  extensions: [basicSetup, StreamLanguage.define(csharp)],
  parent: document.getElementById('_formengine_script')
})
Run Code Online (Sandbox Code Playgroud)

索引.html:

<!doctype html>
<meta charset=utf8>
<h1>CodeMirror!</h1>
<div id="_formengine_script"></div>
<script src="editor.bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)

我认为一定有多种方法可以解决这个问题,但我一个都不能。我找到了很多关于 CodeVersion 5 的信息,但我更愿意使用最新版本。

小智 7

遇到了同样的问题。codemirror 6 文档很奇怪。它包含大量深入探讨,但缺乏基础知识。

我最终研究了单元测试而不是文档。您会发现历史记录模块中有一个很好的测试,该测试更改文档,然后检查文档是否包含预期的数据。

基于此,假设editor是对您的 的引用EditorView,您最终会得到以下结果:

editor.state.doc.toString();
Run Code Online (Sandbox Code Playgroud)

更新:写完这篇文章后,我偶然发现了https://codemirror.net/docs/migration/,只需转到“获取文档和选择”一章即可。它包含您搜索的示例。