0

目前,我正在尝试使用以下方法从 Monaco-Model 中删除模型标记。

    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", [])

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

4

1 回答 1

1

正如评论中所指出的,返回一个没有方法的IMarkergetModelMarkers()数组。 对于标记集的任何修改,都是方法。 主要的解释是s 只是接口对象,因此必须具有诸如,等字段。 摩纳哥编辑器使用单个方法来更新标记集,因为调用该方法后对这些对象的任何修改都将无效:dispose()
setModelMarkers()
IMarkerseveritystartLineNumber
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];例如),因为删除运算符仅删除参考

于 2022-02-11T08:48:50.717 回答