Ace代码编辑器动态设置语言

时间:2014-04-24 19:35:47

标签: javascript jquery syntax-highlighting ace-editor

我尝试使用下拉列表选择语言来实施Ace代码编辑器。我的下拉有一个模式ID。我让编辑器正常工作,但我无法使用下拉按照我希望的方式更改语言。我目前的代码是

var editor = ace.edit("code");
var textarea = $('textarea[name="code"]').hide();
editor.setTheme("ace/theme/textmate");
editor.getSession().setMode("ace/mode/sql");
editor.getSession().setValue(textarea.val());
editor.getSession().on('change', function(){
textarea.val(editor.getSession().getValue());
});

$('#mode').on('change', function(){
var newMode = $("mode").val();
editor.session().setMode({
    path: "ace/mode/" + newMode,
    v: Date.now()});
});

如上所述,这成功启动了编辑器,但我无法从SQL中更改语言,这是最初的语言。我遇到了这个问题Dynamically update syntax highlighting mode rules for the Ace Editor 这就是我加入

的原因
v: Date.now()

但仍然没有运气。

2 个答案:

答案 0 :(得分:8)

editor.session().setMode({

中有拼写错误

使用editor.session.setMode("ace/mode/" + newMode)代替它。

v: Date.now()需要禁用缓存,您很可能不需要缓存。

答案 1 :(得分:-1)

这是对的 editor.getSession()。setMode(“ace / mode /”+ newMode);

但是你输入editor.session而不是editor.getSession()