How do I get value from ACE editor?

后端 未结 7 1152
一整个雨季
一整个雨季 2020-12-13 03:43

I am using ACE editor for the first time. I have the below questions related to it.

  1. How do I find the instance of ACE

相关标签:
7条回答
  • 2020-12-13 03:52

    I added a listener to the load event, and then I get the instance:

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

    Which I can manipulate later.

    0 讨论(0)
  • 2020-12-13 03:53
    var editor = AceEditor.getCurrentFileEditor("MyEditor");
    

    This would return the current editor object

    var code = editor.getValue();
    

    This would return the text within the editor.

    0 讨论(0)
  • 2020-12-13 03:54

    Use the following code to get the value of ace editor, html will have

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

    then

    <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 讨论(0)
  • 2020-12-13 04:11

    To save the contents of the editor I placed a hidden input immediately before it, and initialized the editor like so:

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

    When my form is submitted we get the editor value and copy it to the hidden input.

    0 讨论(0)
  • 2020-12-13 04:13

    Per their API:

    Markup:

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

    Finding an instance:

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

    Getting/Setting Values:

    var code = editor.getValue();
    
    editor.setValue("new code here");
    

    Based on my experience, Ace is the best code editor I've seen. There are few others such as CodeMirror etc. but I found them to be less useful or difficult to integrate than Ace.

    Here's a Wiki page for comparision of such editors.

    There is a paid one also which I haven't tried (and I can't remember for now). Will updated later if I can find it.

    0 讨论(0)
  • 2020-12-13 04:13

    I solve this problem with an hidden input :)

        <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>   
    
    0 讨论(0)
提交回复
热议问题