如何在Ace Editor中显示文件内容

时间:2014-10-27 18:40:03

标签: javascript html5 ace-editor

我正在测试ace-editor以显示来自服务器的大文本文件。由于它能够处理高达4百万行的文件并具有文本突出显示功能,因此它非常适合。

我一直在努力理解Ace编辑器中的DocumentEditSession。根据我的理解,可以告诉ace编辑器从文件中读取并显示它。

我正在使用createEditSessiont()来创建会话并指定文档。来自api文档:

createEditSession(Document | String text,TextMode mode)

文件:必填。如果text是Document,则它将EditSession与它关联。否则,将创建一个新文档,其中包含初始文本

这是我的代码:

     

<script src="../src/ace.js"></script>
<script>
    var docSession = new ace.createEditSession("../Files/myFile.log", "ace/mode/plain_text");

    var editor = ace.edit("editor");
    editor.setSession(docSession);
    editor.setTheme("ace/theme/dawn");
</script>

不幸的是,页面上显示的内容都是“../Files/myFile.log”。我想它是用该文本创建另一个文件而不是阅读文档。如何正确告诉它显示myFile.log的内容?

3 个答案:

答案 0 :(得分:3)

Ace不会以任何方式处理文件,它只是编辑器的前端组件 createEditSessions定义中的文档是Aces Document对象的实例,而不是文件 要将文件加载到ace,您需要通过ajax调用从服务器获取其内容。像https://github.com/ajaxorg/ace/blob/v1.1.7/demo/kitchen-sink/doclist.js#L164

这样的东西

答案 1 :(得分:1)

如果您使用PHP,请尝试以下方法:

<div id="editor"><?php echo file_get_contents('your_file_name.php') ?></div>

答案 2 :(得分:1)

您不必使用ajax调用,具体取决于您的应用程序。要与Ace一起玩,您可以这样简单:

<?php
   $s = file_get_contents('foo.php');
?>
<div id="editor"></div>
<script>
    var s = '<?= $s ?>';

    var editor = ace.edit("editor");
    editor.session.setMode('php');
    editor.session.setValue(s);
</script>

请注意,您可以将元素ID或元素传递给ace.edit。

您可以使用setValue()显示任何字符串内容