如何在 MonacoEditor 中删除模型标记

How to remove Model-Markers in MonacoEditor

目前,我正在尝试使用以下方法从摩纳哥模型中删除模型标记。

    monac.editor.getModelMarkers({owner: "owner"}).forEach(marker => {
      console.log(marker)
      marker.dispose()
    })

标记当前是通过 setModelMarker() 方法设置的

monaco.editor.setModelMarkers(editor.getModel(), "owner", markers)

为模型设置一个空数组会覆盖模型标记,因此这可以用作解决方法。

monaco.editor.setModelMarkers(editor.getModel(), "owner", [])

有什么方法可以可靠地删除模型标记

正如评论中所指出的,getModelMarkers() returns IMarker 的数组,没有 dispose() 方法。
对于标记集的任何修改,setModelMarkers() 是方式。
主要解释是 IMarkers 只是接口对象,因此必须具有 severitystartLineNumber 等字段
Monaco 编辑器使用单个 setModelMarkers() 方法来更新标记集,因为调用该方法后对这些对象的任何修改都将无效:

var markers = [{
    severity: monaco.MarkerSeverity.Warning,
    message: "Some warning",
    startLineNumber: 1,
    startColumn: 1,
    endLineNumber: 1,
    endColumn: editor.getModel().getLineLength(1) + 1
}];
monaco.editor.setModelMarkers(editor.getModel(), "owner", markers);
markers[0].severity = monaco.MarkerSeverity.Error; // No effect

同理,不能删除标记(例如delete markers[0];),如the delete operator deletes only a reference.