2016-04-22 21 views
1

我正在Clojurescript中開發一個單頁面應用程序,並且我想將TinyMCE作爲所見即所得的編輯器用於某些領域。爲了空間效率,我想最終在高級模式下使用google clojure編譯器來縮小項目。由於tinymce dev javascript文件似乎不適合用作extern文件,因此我不得不自己編寫。Clojurescript Extern嵌套函數

有一個特定的函數調用,我無法工作。在clojurescript,我呼籲:

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

這我想像將彙編成類似:

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

我在實習醫生嘗試過許多不同的功能定義,但我不斷收到一個錯誤:

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

這告訴我setContent會被編譯器遮蔽掉。我目前的extern文件看起來像這樣:

//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中。

是否有正確的方式來編寫一個extern來捕獲這些鏈式函數調用?或者有沒有辦法重寫第一個代碼片段,以便我的extern能夠正確保存函數名?先謝謝了。

回答

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")