2016-04-22 3 views
1

Я разрабатываю одностраничное приложение в Clojurescript, и я хочу использовать TinyMCE в качестве редактора WYSIWYG для определенных полей. Для экономии пространства я хочу в конечном итоге минимизировать проект, используя компилятор google clojure в расширенном режиме. Поскольку файлы javascript tinymce dev кажутся непригодными для использования в качестве внешнего файла, я вынужден писать свои собственные.Clojurescript Extern для вложенной функции

Существует один конкретный вызов функции, с которым я не могу работать. В clojurescript, я называю:

(.setContent (.get js/tinymce id) cont) 

, который я предположил бы, что бы составить что-то вроде:

tinymce.get(id).setContent(cont); 

Я пытался много различных определений функций в моих экстернов, но я получаю сообщение об ошибке:

TypeError: tinymce.get(...).Tl is not a function 

Который говорит мне, что setContent скрывается от компилятора. Мой текущий ехЬегп файл выглядит следующим образом:

//all seems to be well here... 
var tinymce; 
tinymce.get = function(name){}; 
tinymce.remove = function(node){}; 
tinymce.init = function(editor){}; 
tinymce.on = function(name, callback, prepend, extra){}; 


//tinymce setContent attempts 
var tinymce.Editor; 
tinymce.Editor.prototype.setContent = function(content){}; 
tinymce.Editor.setContent = function(content){}; 
tinymce.get(name).setContent = function(content){}; 
tinymce.get(name).prototype.setContent = function(content){}; 

var Editor; 
Editor.prototype.setContent = function(content){}; 
Editor.setContent = function(content){}; 

который в настоящее время является своего рода вбрасывания все-против-стены-увидим, какие палки пытаются. Возврат объекта get (name) должен находиться в пространстве имен tinymce.Editor.

Существует ли надлежащий способ написания внешних документов, чтобы поймать эти цепные вызовы функций? Или есть способ переписать первый фрагмент кода, чтобы мои externs правильно сохраняли имена функций? Заранее спасибо.

ответ

0

Эта линия:

var tinymce.Editor; 

не синтаксически корректен в JS:

SyntaxError: missing ; before statement 

Удалите его и оставить эту строку:

tinymce.Editor.prototype.setContent = function(content){}; 

Это должно работать нормально.

Также вы всегда можете упасть обратно к свойствам через строковые литералы, которые никогда не будут переименованы:

(require '[goog.object :as gobj]) 
(gobj/get your-object "i-wont-be-renamed") 
Смежные вопросы