2016-04-22 13 views
1

Clojurescriptで単一ページアプリケーションを開発しています.TinyMCEを特定のフィールドのWYSIWYGエディタとして使用したいと考えています。スペース効率のために、私は最終的に高度なモードでgoogle clojureコンパイラを使用してプロジェクトを縮小したいと考えています。 tinymce dev javascriptファイルはexternファイルとして使用するのには不適切だと思われるので、私は自分自身を書く必要があります。Clojurescript Extern for Nested Function

私が働くことができない特定の関数呼び出しがあります。 clojurescriptでは、私が呼び出す:私は想像

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

のようなものにコンパイルします:私は私の外部宣言では、さまざまな関数定義を試してみましたが、まだ私はエラーを取得しておく

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

これは、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を書く適切な方法はありますか?または、私の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")