我正在测试ace-editor以显示来自服务器的大文本文件。由于它能够处理高达4百万行的文件并具有文本突出显示功能,因此它非常适合。
我一直在努力理解Ace编辑器中的Document和EditSession。根据我的理解,可以告诉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的内容?
答案 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()显示任何字符串内容