文章讲述了在使用MonacoEditor时遇到的问题,即当编辑内容更改后,组件未能获取并更新JSON格式的错误标记,导致校验失败。作者通过监听数据变化并在必要时重新获取标记来解决此问题,强调了对uri的理解和正确运用。 摘要由CSDN通过智能技术生成

提示:这里可以添加本文要记录的大概内容:
monaco-editor对比组件中,在改变了编辑内容之后,点击下一步操作。我这边会有一个格式校验的问题,json格式的校验,我利用的是 monaco 原生的错误标记,但是在我更新内容之后,重新获取错误标记,并没有更新,还是之前的,导致我的错误校验失败,异常崩溃,但凡之前有一次报错,我改了报错它也还是一直出现,定位到原因是因为 monaco 组件的 monaco.editor.getModelMarkers() 事件没有拿到最新的错误标记信息。

提示:以下是本篇文章正文内容,下面案例可供参考

一、没有更新,那我就在数据改变的时候,重新获取标记

监听数据改变

modifiedModel.onDidChangeContent((data) => {
    let markers = [];
    if (id === "xml") {
      markers = checkXMLSyntax(modifiedModel.getValue());
    } else if (id === "yaml") {
      markers = checkYAMLSyntax(modifiedModel.getValue());
    } else if (id === "lua") {
      markers = checkLuaSyntax(modifiedModel.getValue());
    } else {
      setTimeout(() => {
        console.log(modifiedModel)
        markers = monaco.editor.getModelMarkers(modifiedModel.uri)
        monaco.editor.setModelMarkers(modifiedModel, id, markers);
      }, 500)
    monaco.editor.setModelMarkers(modifiedModel, id, markers);
  });

提示:这里对文章进行总结:

uri的理解和运用

在编辑器有很多交互,其一种交互就是当鼠标放到一个class上,显示该类的定义,该类的行数,注释,这在monaco很常见,有时这个class并不是在当前文件定义的,而是在其他未打开的文件定义的。 鼠标放到insertSpaces 上,会显示该属性的上传路径,类型定义,以及备注。 上面这个是一个使用自定义Marker设置的分词备注。对于一个较大的项目来说,在使用类,方法,参数时,这些注释能够极大地帮助开发者,排查错误,准确调用方法,参数定义。 这种分词注释的适用场景有很多,其一个场景时,在
代码提示或者说代码补全功能是我们经常需要定制的部分。 目前它提供的快捷键是ctrl+space,和win10以下的操作系统的默认英文切换是冲突的。 检查源码发现,TriggerSuggestAction的触发快捷键已经写死:
以前项目是用ace编辑器的,但是总有些不敬人意的地方。前端事件看见的VS Code编辑器Monaco Editor准备更换下,下面介绍一些使用遇到的一点问题。代码提示  1.项目引用 import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; 项目引用了editor.api.js,但是这个文件...
在使用Monaco Editor进行编程时,我们经常需要在编辑器的指定位置插入一些代码或文本。这种操作在Monaco Editor非常简单。 第一步是获取编辑器的实例。可以通过以下方式来获取: ```javascript var editor = monaco.editor.create(document.getElementById("container"), { value: "some text", language: "javascript" 在这里,我们将Monaco Editor绑定到HTML页面上的一个容器元素,并指定了编程语言为JavaScript。 接下来,我们可以通过monaco.editor.getModelAtPosition方法来获取指定位置的模型。例如,如果我们要在文件第3行第10列的位置插入文本,可以使用如下代码: ```javascript var position = new monaco.Position(3,10); var model = editor.getModel(); model.applyEdits([{ range: new monaco.Range(position.lineNumber, position.column, position.lineNumber, position.column), text: "insert content", forceMoveMarkers: true 在这里,我们首先创建了一个monaco.Position对象来描述需要插入内容的位置。然后使用editor.getModel方法获取编辑器的模型,再调用model.applyEdits方法来进行插入操作。该方法接受一个编辑操作的数组,其range属性表示需要插入的范围,text属性表示需要插入的文本内容,forceMoveMarkers属性表示是否需要移动标记。在这里,我们将范围定义为一个点,即只要在指定位置插入内容即可。 通过以上步骤,我们就可以在指定位置插入内容了。需要注意的是,这种操作也可以通过调用editor.executeEdits方法来实现,这个方法可以对多个范围进行编辑操作。此外,还需要注意避免在代码硬编码位置信息,而是应该使用monaco.editor.getCursorPosition方法,动态获取当前光标位置。
前端控制台报错#Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘0‘) 86620
#element-plus# not found: Error: Can‘t resolve ‘element-plus/es/components/xxxx/style/css‘ in... Zeb346: #element-plus# not found: Error: Can‘t resolve ‘element-plus/es/components/xxxx/style/css‘ in... 老衲的少女心i: 删除依赖包和lock哪个文件,重新下载试试 #element-plus# not found: Error: Can‘t resolve ‘element-plus/es/components/xxxx/style/css‘ in... Zeb346: 还是会报错 报错:不能将类型“undefined”分配给类型“RouteType”。ts(2322) 娜娜子0410: 符号没问题的还是报错 文件上传#如何将文件类型的数据转换成Buffer类型的数据(二进制流)传递给后端人员 即时药布: js也没有new Buffer这个api吧