使用ACE编辑器,它就像使用出现editor.getSession().getUndoManager()
与已经设定会话editor.setSession()
返回一个UndoManager
只包含空函数对象undo()
,redo()
和reset()
。它不返回带有诸如hasUndo()
,或hasRedo()
或任何其他已记录方法的方法的UndoManager 。在源代码中,看起来我的会话不得具有,$undoManager
并且被迫使用空(且不完整)$defaultUndoManager
:
this.$defaultUndoManager = {
undo: function() {},
redo: function() {},
reset: function() {}
};
this.getUndoManager = function() {
return this.$undoManager || this.$defaultUndoManager;
};
为什么会被设定editor.setSession会话(),有一个$undoManager
是undefined
这样呢?
看起来应该像这样(ace.js#L112)在会话上设置撤消管理器,
并且如果缺少undomamager,则将返回defaultUndomanager,以便在访问undomanager时,编辑器方法不必检查null。
我认为EditSession本身不会创建undoManager的原因是允许用户提供undomanager的特殊实现(例如,用于协作)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句