如何根据SelectList中的选定值更改CodeMirror编辑器的模式

时间:2014-02-08 08:38:22

标签: javascript jquery codemirror

在我的应用程序中,我有一个文本区域和一个包含Code镜像支持的语言的选择列表。 当用户从选择列表中选择一种语言时,有人能告诉我如何更改代码镜像编辑器的模式(编程语言)吗?我是否需要手动加载所选模式的js文件?是否需要进行任何设置才能即时更改?我是否需要为所有支持的模式预加载js文件?谢谢!

2 个答案:

答案 0 :(得分:1)

以这种方式这样做:

function loadModeForSelectedOption() {
    var script = $("#mode option:selected").attr('data-script');
    var mode = $("#mode option:selected").attr('data-mime-type');
    loadJS(script, function () {
        myCodeMirror.setOption("mode", mode);
    });
}

function loadJS(src, callback) {
    var s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onreadystatechange = s.onload = function () {
        var state = s.readyState;
        if (!callback.done && (!state || /loaded|complete/.test(state))) {
            callback.done = true;
            callback();
        }
    };
    document.getElementsByTagName('head')[0].appendChild(s);
}

选择带语言的列表(几个例子):

<option value=108
        data-mime-type="text/x-csrc"
        data-script="/Scripts/codemirror-2.37/mode/clike/clike.js">
    C
</option>
<option value=110
        data-mime-type="text/x-csharp"
        data-script="/Scripts/codemirror-2.37/mode/clike/clike.js">
    C#
</option>
<option value=109
        data-mime-type="text/x-c++src"
        data-script="/Scripts/codemirror-2.37/mode/clike/clike.js">
    C++
</option>

答案 1 :(得分:1)

loadmode插件可以帮助解决这个问题。有关示例,请参阅demo