2013-07-29 57 views
2

我想在Ember應用程序中使用TinyMCE組件。我的基本問題是:你如何以及在哪裏啓動tinymce?Ember和TinyMCE

模板包含textarea元素:

<textarea class='test' name="content" style="width:100%"> 

我需要初始化TinyMCE的如下:

tinymce.init({ 
    selector: "textarea" 
}); 

我在哪裏需要做初始化,以及如何?在想,在控制器初始化,但預計不工作...

App.IndexController = Ember.Controller.extend({ 
    init: function() { 
     tinymce.init({ 
      selector: "textarea" 
     }); 
    }  
}); 

見的jsfiddle:http://jsfiddle.net/cyclomarc/wtktK/6/

希望有人能幫助... ...

+0

你的jsfiddle是miss tinymce主題文件'theme.js'所以即使正確初始化它不會工作。 – chrmod

+0

任何想法如何正確添加tinymce js文件到JSFiddle?這似乎確實是我錯過了大量的文件(包括主題,CSS,皮膚,圖像等)。我不認爲我需要手動將所有這些添加到JSFiddle ... – cyclomarc

+0

剛剛發現它;請使用CDN版本//tinymce.cachefly.net/4.0/tinymce.min.js – cyclomarc

回答

5

tinymce.init之前,你必須確保您的textarea標記位於DOM中。在您的控制器初始化時,您的視圖(在本例中爲IndexView)尚未呈現。等待視圖的有效方法是在該視圖中使用didInsertElement鉤子。在你的情況下:

App.IndexView = Ember.View.extend({ 
    didInsertElement: function(){ 
     tinymce.init({ 
      selector: "textarea" 
     }); 
    } 
}); 
+0

感謝您使用此解決方案。這確實有效。我總是對int,didInsertElement和其他事件在模板,視圖,控制器等的加載時觸發感到困惑。 – cyclomarc

+0

我現在正在與TinyMCE textarea的valuebinding結合在一起。見http://stackoverflow.com/questions/17930456/ember-how-to-valuebind-tinymce-textarea-field-to-model - 也許你可以幫助... – cyclomarc