Як отримати значення від редактора ACE?


75

Я використовую ACEредактор вперше. У мене є наступні запитання, пов’язані з цим.

  1. Як знайти примірник ACEредактора на сторінці? Я не хочу підтримувати глобальну змінну, яка буде містити екземпляр редактора. Мені потрібно знайти його екземпляр на вимогу.

  2. Як отримати та встановити його значення?

Я відкритий для пропозицій щодо будь-якого кращого редактора, ніж ACEредактор, який підтримуватиме майже всі типи мови / розмітки / css і т.д. і має високу інтеграцію з jQuery.


5
О, який безлад. Редактор, відомий під назвою "туз", забезпечує роботу Cloud9 IDE ( cloud9-ide ). Редактор двигун був раніше відомий як Skywriter ( Skywriter ), а також, що раніше був відомий як Беспіне ( Беспіне , запроваджений-Беспіне ). Прикро, що поточний тег туза не для редактора.
Чарльз

@Charles: А ваша думка ...?
Mrchief

@Mrchief, чотири теги на одне - це погано. Дякую, що побив мене до створення нового тегу. Якщо ви не дійдете до нього раніше мене, я переглядаю інші теги та додаю новий до відповідних питань.
Чарльз

@Charles: Може бути, а може і не бути. редактор туза, який є річчю Javascript, потребує тегу JS. Оскільки OP також шукає інтеграції з jQuery, jQuery також має сенс. Я видалив неправильний тег "туз".
Mrchief

Відповіді:


143

Відповідно до їх 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.

Ось сторінка Wiki для порівняння таких редакторів .

Є також платний, який я ще не пробував (і наразі не пам’ятаю). Буде оновлено пізніше, якщо я зможу його знайти.


Ace vs CodeMirror 1. Отже, якщо вам потрібен дуже маленький редактор або вам не подобається те, як працює туз, і ви хочете реалізувати більшу частину, Codemirror - кращий шлях. 2. Але якщо вам потрібен редактор, який відповідає рівню настільних редакторів, не додаючи 300 кб власного коду, найкращий вибір - IMHO.
igaurav

1
Звідки береться aceпредмет? Де це визначено?
Ману Чадха

Якщо я це роблю, я отримую вікно не визначено помилка. Чи може хтось керувати мною, якщо я щось змінив у конфігурації
Mia

17

Щоб зберегти вміст редактора, я розмістив прихований ввід безпосередньо перед ним та ініціалізував редактор так:

    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);                
        });
    }

Коли моя форма подана, ми отримуємо значення редактора та копіюємо його на прихований ввід.


8

Я вирішую цю проблему за допомогою прихованого вводу :)

    <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>   

7

Припустимо, що ми ініціалізували редактор ace для тегу в html. EX: <div id="MyAceEditor">this the editor place holder</div>.

У розділі javascript, після завантаження ace.js,

Першим кроком є ​​пошук екземпляра вашого редактора, як показано нижче.

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

Щоб отримати значення з редактора тузу, використовуйте метод getValue (), як показано нижче.

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

Щоб встановити значення для редактора туза (щоб вставити якийсь код у редактор), використовуйте setValue()метод, як показано нижче.

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

як npm встановити редактор ace для використання в моєму коді машинопису для його автоматизації?
Mia

0
var editor = AceEditor.getCurrentFileEditor("MyEditor");

Це поверне поточний об'єкт редактора

var code = editor.getValue();

Це поверне текст у редакторі.


Як встановити npm ace та як імпортувати його в мій код машинопису? ти можеш мене направити?
Міа

0

Використовуйте наступний код, щоб отримати значення редактора тузу, який буде мати html

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

тоді

<script >
 var some = $('#aceEditor');

 some.keyup(function() {
  var code = editor.getSession().getValue();
  $.ajax({
       type: "POST",
       url: "{% url 'creatd-new' %}",
       data: {'code':code},
       success: function (data) {
           console.log("foo");
       }
     });
     }
      </script>

0

Я додав слухач до події завантаження, а потім отримую екземпляр:

onLoad={(editor) => {
    this.sourceEditor=editor;
}}

Якими я можу потім маніпулювати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.