王牌编辑器设置新会话



我正在尝试在 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 有关,对此我一无所知,所以我想我还没有真正很好地回答我自己的问题。

相关内容

  • 没有找到相关文章

最新更新