2012-01-22 67 views
47

我第一次使用ACE編輯器。我有下面的相關問題。如何從ACE編輯器中獲得價值?

  1. 如何在網頁上找到ACE編輯器的實例?我不想 維護一個全局變量,它將保存編輯器實例。 I 需要按需查找其實例。

  2. 如何獲取並設置其值?

我打開超過ACE編輯器,支持幾乎所有類型的語言/標記/ CSS等,並與jQuery高度集成更好的編輯建議。

+4

哦,什麼亂七八糟的。現在稱爲「ace」的編輯器爲Cloud9 IDE提供支持([tag:cloud9-ide])。編輯引擎以前被稱爲Skywriter([tag:skywriter]),而* *以前被稱爲Bespin([tag:bespin],[tag:embedded-bespin])。令人煩惱的是,當前的[tag:ace]標籤對編輯器來說不是*。 – Charles

+0

@Charles:你的觀點是......? – Mrchief

+0

@Mrchief,一件事的四個標籤是壞事。不過,感謝我打敗了新的標籤創作。除非你明白我的意思,否則我會翻閱其他標籤,並將新標籤添加到相關問題中。 – Charles

回答

99

每它們API

標記:

<div id="aceEditor" style="height: 500px; width: 500px">some text</div> 

找到一個實例:

var editor = ace.edit("aceEditor"); 

獲取/設定值:

var code = editor.getValue(); 

editor.setValue("new code here"); 

根據我的經驗,Ace是我見過的最好的代碼編輯器。還有其他幾個如CodeMirror等,但我發現它們不如Ace有用或難於整合。

Here's a Wiki page for comparision of such editors

還有一個我還沒有試過的付費產品(現在我不記得了)。如果我能找到它,稍後會更新。

+0

Ace vs CodeMirror 1.因此,如果您需要一個非常小的編輯器,或者不喜歡ace的工作方式並希望重新實現它的大部分,Codemirror是更好的選擇。 2.但是,如果你需要一個與桌面編輯器相同的編輯器,而不需要添加300kb的自己的代碼,ace是一個更好的選擇。 – igaurav

12

爲了節省我才立即放在一個隱藏的輸入編輯的內容,並初始化像這樣的編輯器:

var $editor = $('#editor'); 
    if ($editor.length > 0) { 
     var editor = ace.edit('editor'); 
     editor.session.setMode("ace/mode/css"); 
     $editor.closest('form').submit(function() { 
      var code = editor.getValue(); 
      $editor.prev('input[type=hidden]').val(code);     
     }); 
    } 

當我的表單提交,我們得到的編輯值,並將其複製到隱藏輸入。

+0

哇什麼方法..... – aswzen

6

讓我們假設我們已經在html中的標籤上初始化了ace編輯器。 EX:<div id="MyAceEditor">this the editor place holder</div>

在JavaScript部分,裝載ace.js後,

第一步是下面找到你的編輯器的實例。

var editor = ace.edit("MyAceEditor"); 

要從ace編輯器獲取值,請使用getValue()方法,如下所示。

var myCode = editor.getSession().getValue(); 

要設置的值以王牌編輯器(推一些代碼到編輯器),可以使用如下方法setValue()

editor.getSession().setValue("write your code here"); 
4

我解決這個問題有隱藏的輸入:)

<input type="hidden" name="komutdosyasi" style="display: none;"> 
    <script src="/lib/aceeditor/src-min/ace.js" type="text/javascript" charset="utf-8"></script> 

<script> 
    var editor = ace.edit('editor'); 
     editor.session.setMode("ace/mode/batchfile"); 
     editor.setTheme("ace/theme/monokai"); 

    var input = $('input[name="komutdosyasi"]'); 
     editor.getSession().on("change", function() { 
     input.val(editor.getSession().getValue()); 
    }); 
</script>