我正在尝试在 ace 编辑器文本区域中实现选项卡,并希望能够在创建新选项卡时创建新会话,并在更改选项卡时在它们之间切换。
我无法进行新会话。
这是来自ACE编辑网站
new EditSession(Document | String text, TextMode mode)
Sets up a new EditSession and associates it with the given Document and TextMode.
Arguments
text Document | String
Required. If text is a Document, it associates the EditSession with it. Otherwise, a new Document is created, with the initial text
mode TextMode
Required. The inital language mode to use for the document
所以要做一个新的会话,我已经尝试了
session1 = new EditSession("some text", "javascript");
我收到错误消息
ReferenceError: EditSession is not defined
我也试过
this.setSession(session || new EditSession(""));
eg. editor.setSession(new EditSession("session1"));
出现相同的错误消息
Ace 只创建一个全局ace
,其他所有内容都必须从 require(如果您使用它)或从 ace.require
获取在您的示例中ReferenceError: EditSession is not defined
意味着您没有任何名为 EditSession
的变量。
使用session = new EditSession("editor content", string mode);
时要以这种方式创建EditSession
您需要向其添加撤消管理器。
但是有ace.createEditSession
方法,它可以创建一个新会话并为其设置 undoManager。
session = ace.createEditSession("string or array", "ace/mode/javascript")
请注意,对于模式,您需要使用模式的路径,例如"ACE/模式/...",而不仅仅是"javascript"
在这里找到了答案:D
https://groups.google.com/forum/#!topic/ace-discuss/oL5uU_kebfE
因为 ace 的打包版本具有回退功能,如果 RequireJS 不可用,我必须使用 ist 这是:
EditSession = ace.require("ace/edit_session").EditSession;
var tester = new EditSession('');
虽然我仍然不知道为什么我最初使用的功能不起作用,但可能与 require.js 有关,对此我一无所知,所以我想我还没有真正很好地回答我自己的问题。