我在尝试实现一种使Undo和Redo按钮根​​据UndoManager自动启用或禁用的方法时遇到一些问题。

var editor = ace.edit(editorElement);

editor.on('change', function (e) {
  var um = editor.getSession().getUndoManager();
  $('button.undo').attr('disabled', um.hasUndo() ? false : true );
  $('button.redo').attr('disabled', um.hasRedo() ? false : true );
});


首次更改文档时,它不会更改按钮的禁用状态。此时,尚未通知UndoManager发生了更改。

我没有看到任何适合测试UndoManager状态的事件。

最佳答案

使用input事件而不是change事件。在change事件触发后,undomanager会异步更新,并在此之后发出input事件。

09-16 19:37