2014-01-17 114 views
8

我剛開始使用Ace Editor。根據doc「編輯器支持純文本模式。所有其他語言模式可作爲單獨的模塊,按需加載......」這是如何設置JavaScript模式editor.getSession().setMode("ace/mode/javascript");這隻適用於突出顯示語法。Ace-Editor JSON自動格式/縮進

在我的情況下,我用JSON的工作 - editor.getSession().setMode("ace/mode/json")

我所試圖實現的是

  • 顯示格式良好的JSON響應

問題是

  • 王牌編輯器似乎無法處理的 editor.setValue() JS對象或JSON已經被轉換成字符串

問題

  • 我如何設置自動格式/壓痕放在 <div id="editor"></div>的字符串?

HTML:

<div id="editor"></div>

SCRIPT:jsonDoc從服務器

$scope.getData = function (jsonDoc) { 
    var editor = ace.edit("editor"); 
    editor.getSession().setMode("ace/mode/json"); 
    editor.setTheme("ace/theme/twilight"); 
    editor.getSession().setTabSize(2); 
    editor.getSession().setUseWrapMode(true); 
    editor.setValue(JSON.stringify(jsonDoc)); 
}; 

回答

26

是數據要格式化JSON字符串可以使用的其他參數JSON.stringify。嘗試類似於

editor.setValue(JSON.stringify(jsonDoc, null, '\t')); 

第三個參數用於每個級別的縮進。 (可能在不同的實現中有所不同)。例子見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

您也可以從ace.js文件切換顯示選項。

+25

如何爲其他語言做到這一點? – 2014-02-04 07:32:25