Редактор ACE + requirejs + плагин AMD jquery: режим не может быть загружен

Я использую эту версию ACE — git://github.com/ajaxorg/ace.git

И это я загружаю его через requirejs,

require([
    // Load our app module and pass it to our definition function
    'jquery',
    'ext/ace-master/lib/ace/ace'
...

И как я вызываю редактора,

var editor = ace.edit("ace-editor");
editor.setTheme("ext/ace-master/lib/ace/theme/eclipse");
editor.getSession().setMode("ext/ace-master/lib/ace/mode/xml");

Но я всегда получаю это сообщение об ошибке, а подсветка синтаксиса не выделяет код в форме,

Could not load worker
ace.js (line 1)
TypeError: this.$mode.createWorker is not a function


...ts","module","ace/lib/lang"],function(a,b,c){var d=a("../lib/lang"),e=function()...


TypeError: a.getTokenizer is not a function


...ts","module","ace/lib/lang"],function(a,b,c){var d=a("../lib/lang"),e=function()...

Кто-нибудь сталкивался с этой проблемой и знает, как ее решить?

Если я использую эту версию сборки - https://github.com/ajaxorg/ace-builds/ ошибок еще больше - файлы не найдены и т.д.

или этот http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js — много ненайденных ошибок!

Примечание. Я загружаю форму через jquery ajax, кстати, это ajax вызывает ошибку??


person laukok    schedule 08.12.2013    source источник


Ответы (3)


вы неправильно настроили требуемые пути

Добавить

require.config({paths: {
    ace: "ext/ace-master/lib/ace"
}})

перед первым требованием и использованием setMode("ace/mode/xml");

см. http://jsbin.com/ojijeb/339/edit для рабочей версии

person a user    schedule 09.12.2013

Да, ваш AJAX загружает вашу форму после того, как остальная часть Javascript уже завершена.

Вы можете использовать ту же функцию, чтобы перезагрузить свой Javascript, но я не уверен, какие конфликты могут возникнуть, поскольку ваш код на самом деле не весь здесь.

У меня была похожая проблема, и чтобы ее решить, я включил Javascript в данные, которые пришли с запрашиваемым HTML. Пища для размышлений.

person Deryck    schedule 08.12.2013
comment
Благодарю. как вы «включили Javascript внутрь данных»? не могли бы вы показать несколько примеров? Вы имеете в виду размещение ACE внутри самой формы? - person laukok; 08.12.2013
comment
Ну, я не уверен, что вы собираетесь делать, но в моем случае я запрашиваю части HTML-файла с некоторыми div и еще чем-то, и в конце куска кода я ударил свой <script src=...></script> Если вы хотите увидеть это в действии, чтобы посмотрите, связано ли это с вашей ситуацией, я поместил его в песочницу на моем сервере по адресу asims.fleeceitout.com - person Deryck; 08.12.2013
comment
Я знаю, что это просто концепция, которую я хотел продемонстрировать. Если вы застряли дальше по линии, дайте мне знать, и мы постараемся решить эту проблему. - person Deryck; 08.12.2013