繁体   English   中英

Ace代码编辑器的自动完成功能不起作用

[英]Ace Code Editor auto completion not working

我有一个textarea,可在浏览器中变成ace代码编辑器。 基本上,它只是将textarea模仿为div,然后在Submit上获取值。

自动完成功能无效。 这是我的脚本:

$(function () {
  $('textarea[data-editor]').each(function () {
    var textarea = $(this);
    var mode = textarea.data('editor');
    var editDiv = $('<div>', {
      position: 'absolute',
      height: textarea.height(),
      'class': textarea.attr('class')
    }).insertBefore(textarea);
    textarea.css('display', 'none');
    var editor = ace.edit(editDiv[0]);        
    editor.getSession().setValue(textarea.val());
    editor.getSession().setMode("ace/mode/" + mode);
    // enable autocompletion and snippets
    ace.require("ace/ext/language_tools");
    editor.setOptions({
        enableSnippets: true,
        enableBasicAutocompletion: true,
        enableEmmet: true
    });
        // editor.setTheme("ace/theme/idle_fingers");
        editor.getSession().setUseWorker(false);
        editor.session.setFoldStyle('manual');
        editor.setShowPrintMargin(false);
        // copy back to textarea on form submit...
        textarea.closest('form').submit(function () {
          textarea.val(editor.getSession().getValue());
        })
      });
});

如果我删除$('textarea[data-editor]').each(function () {然后运行

ace.require("ace/ext/language_tools");
    editor.setOptions({
        enableSnippets: true,
        enableBasicAutocompletion: true,
        enableEmmet: true
    });

它工作正常。 我究竟做错了什么?

可能是您设置的错误模式没有任何完成。 该版本的波纹管工作

 $(function() { $('textarea[data-editor]').each(function() { var textarea = $(this); var mode = textarea.data('editor'); var editDiv = $('<div>', { position: 'absolute', height: textarea.height(), 'class': textarea.attr('class') }).insertBefore(textarea); textarea.css('display', 'none'); var editor = ace.edit(editDiv[0]); editor.session.setValue(textarea.val()); editor.session.setMode("ace/mode/" + mode); // enable autocompletion and snippets ace.require("ace/ext/language_tools"); editor.setOptions({ enableSnippets: true, enableBasicAutocompletion: true, enableEmmet: true, useWorker: false, theme: "ace/theme/idle_fingers", showPrintMargin: false, showFoldWidgets: false }); // copy back to textarea on form submit... textarea.closest('form').submit(function() { textarea.val(editor.getSession().getValue()); }) }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://ajaxorg.github.io/ace-builds/src/ace.js"></script> <script src="https://ajaxorg.github.io/ace-builds/src/ext-language_tools.js"></script> <script src="https://ajaxorg.github.io/ace-builds/src/ext-emmet.js"></script> <form> <textarea data-editor='javascript' rows="10">{ }</textarea> <input type="submit" value="Submit"> </form> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM