我想在使用turbolinks的頁面中實現ACE編輯器。但是,編輯器只在我直接調用該頁面或重新加載頁面時才起作用。導航到它不會觸發每一個必要的步驟來使編輯器工作。Turbolinks外部javascript(這裏:ACE編輯器)
當前集成:
<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/
並要求它們在鏈輪清單中時,我很難讓它正常運行。
任何關於turbolinks和正確方法的啓示?
Turbolinks只會在通過url導航時重新載入頁面內容,這意味着javascript不會被加載/重新加載,請試試這個gem [jquery.turbolinks](https://github.com/kossnocorp/jquery.turbolinks),它可能會解決你的問題。 –