2014-02-08 33 views
2

在我的應用程序中,我有一個文字區域以及一個包含代碼鏡像支持的語言的選擇列表。 有人能告訴我如何在用戶從選擇列表中選擇一種語言時更改代碼鏡像編輯器的模式(編程語言)嗎?我是否需要手動爲選定模式加載js文件?是否有任何設置需要在飛行中改變?我是否需要爲所有支持的模式預加載js文件?謝謝!如何根據SelectList中的選定值更改CodeMirror編輯器的模式

回答

1

還有的loadmode插件,可以與幫助。例如,請參閱demo

+0

我得到了NPM的CodeMirror,但它沒有與loadmode –

+0

我絕對不會,你只需要確保你實際加載我鏈接的插件。 – Marijn

+0

是的,文檔有點不準確,因爲它表示meta.js位於模式文件夾中,但loadmode.js位於addon/mode/loadmode.js中,即使它們都表示它們位於模式文件夾中 –

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> 
相關問題