我正在尝试在一个页面中实现一个ACE编辑器,它使用的是turbolinks。但是,只有当我直接调用该页面或重新加载该页面时,编辑器才能工作。导航到它并不会触发使编辑器工作所必需的每一步。
目前的整合:
<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.8/require.js" type="text/javascript" charset="utf-8"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/mode-html.js" type="text/javascript" charset="utf-8"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/mode-css.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
function initialize_editor() {
var editor = ace.edit("html-editor");
editor.setTheme("ace/theme/clouds");
editor.getSession().setMode("ace/mode/html");
editor.setValue($('#template_html').val());
$('form').on('submit', function(event) {
$('#template_html').val(editor.getValue());
});
}
$(document).ready(initialize_editor);
$(document).on('page:load', initialize_editor);
</script>这会在离开页面后抛出一个Uncaught TypeError: Cannot read property 'ace/ace' of undefined.,js似乎被卡在页面上,并且在每次导航加载时,我都会得到一个Uncaught ReferenceError: ace is not defined。
在这里包含ACE编辑器(或其他外部库)的正确方法是什么?通过链轮加载它们将不起作用,当将它们复制到vendor/javascripts/并要求它们在链轮清单中显示时,我很难让它正常运行。
关于涡轮机和正确的方法有什么启示吗?
发布于 2013-10-16 07:02:35
我可以通过获取所需的js文件并将它们放入供应商/javascript路径来解决这个问题。对于空格和制表符的特殊字符的初始问题(其他人在这里也有报告)可以通过使用BOM显式地将文件存储为utf8来解决。
https://stackoverflow.com/questions/19274323
复制相似问题