我已经使用了很长一段时间。并感谢http://github.com/spohlenz/tinymce-rails 但现在我必须根据backbone-on-rails添加在应用程序中的tinymce中 我已经按照rails app的所有说明进行了操作 试图包括tinymce之前和之前在application.js中的主干文件之后 我的骨干模板
<textarea class="tinymce" id="article_body" rows='40' cols='120' >
<%= @article.get('body') %>
</textarea>
但是,控制器无法初始化 你能帮帮我吗?
更新1
我尝试在模板和模板中启动tinymce this:
在edit.jst.eco
<textarea class="tinymce" id="article_body<%= @article.get('id') %>" rows='40' cols='120' >
<%= @article.get('body') %>
</textarea>
<% tinyMCE.execCommand "mceAddControl", true, "article_body"+@article.get('id')%>
控制o ver texterea仅在手动刷新(f5)
后出现 更新2
我已经尝试将execCommand方法添加到我感兴趣的视图的渲染方法中,显示了以下内容:
class Notes.Views.ArticleEdit
render: ->
$(@el).html(@template(article: @model))
tinyMCE.execCommand "mceAddControl", false, "article_body"+@model.get('id')
this
与更新1相比没有变化
更新3
尝试渲染后绑定了tinymce。使用了2种方法:
1)
class Notes.Views.ArticleEdit
render: ->
$(@el).html(@template(article: @model))
setTimeout (->
tinyMCE.execCommand "mceAddControl", true, "article_body" + @model.get("id")
), 100
没有变化。只有在刷新tinymce后才会显示 2)http://fahad19.tumblr.com/post/28158699664/afterrender-callback-in-backbone-js-views
class Notes.Views.ArticleEdit extends Backbone.View
initialize: ()->
_.bindAll this, "render", "afterRender"
_this = this
@render = _.wrap(@render, (render) ->
render()
_this.afterRender()
_this
)
@model.on('change',@render,this)
@model.on('destroy',@remove,this)
afterRender: ->
console.log tinyMCE
tinyMCE.execCommand "mceAddControl", true, "article_body" + @model.get("id")
虽然我得到一个控制台输出(正确的tinymce对象),但我没有得到什么:(
更新4
这是github
更新5
我错了 - 项目只在路由器中呈现的DOM中出现。所以我将不得不编辑Notes.Routers.Articles #edit action
答案 0 :(得分:0)
要解决我的问题,我必须像这样编辑路由器操作:
edit: (id)->
@model = @collection.get(id)
view = new Notes.Views.ArticleEdit(model: @model)
$('#container').html(view.render().el)
el_id = "article_body" + @model.get("id")
if (tinyMCE.getInstanceById(el_id)) {
tinyMCE.execCommand 'mceFocus', false, el_id
tinyMCE.execCommand "mceRemoveControl", false, el_id
}
tinyMCE.execCommand "mceAddControl", false, el_id
tinyMCE.triggerSave()*emphasized text