为 Ace Editor 禁用缓存

Disable caching for Ace Editor

我正在编写一个结合树目录和 Ace 编辑器进行编辑的单页应用程序 XML。树(使用 JSTree 完成)是从各种文件路径递归创建的。单击有效节点时,ajax 调用会获取 XML 并设置 Ace 编辑器的值。然后可以编辑 XML 并稍后发布以保存。

我的问题是,如果用户按下 CTRL+Z 并且当前 XML 中没有剩余更改可撤消,Ace 编辑器的值将设置为前一个文件的值。此时,错误的节点现在在树中突出显示并且编辑器正在显示 "wrong" 数据。

是否可以在 Ace 编辑器或其 DIV 中禁用缓存?我想保留 CTRL+Z 撤消当前文件更改的功能,但希望每次将新文件加载到编辑器时清除 out/refreshed。

感谢您的意见!

调用 editor.session.setValue 重置 undomanager,但在这种情况下,最好改用新会话

var oldSession = editor.session
var session = ace.createEditSession("text")
editor.setSession(session)

您可以在打开同一文件时保留旧会话以恢复滚动位置等,或者调用

oldSession.destroy()

摧毁它。