tinymce没有在backbone.js视图中看到我的textarea

时间:2014-01-13 21:28:01

标签: jquery backbone.js tinymce tinymce-4

我无法让TinyMCE v4与backbone.js一起使用。

我有一个backbone.js视图,其中包含我想与TinyMCE一起使用的textarea。

我将tinymce init函数包装在jquery函数中,如下所示:

$(function () {
    tinymce.init({selector:'textarea'});
)};

我的观点使用这样的模板:

<script type="text/template" id="tn-template">
    <textarea> </textarea>
</script>

textarea永远不会转换为tinyMCE实例。

如果我将textarea从模板中删除,然后将其转储到我的html页面中,那么它确实有效。

所以问题似乎是tinyMCE看不到textarea,即使它在页面上,我可以使用firebug看到它。

我尝试在所有的backbone.js调用之后放入tinyMCE init,但它仍然不起作用。

任何提示?

由于

1 个答案:

答案 0 :(得分:2)

选择器不会查看&#39;脚本&#39;因为脚本块内的代码不是DOM元素。

在调用tinyMCE之前,您可能想先渲染视图。

例如

SomeView = Backbone.View.extend({

    render: function () {
        this.$el.html(this.template({
            //template args
        }));
        tinymce.init({selector:'textarea'});
    }
});

我觉得在骨干网视图中使用tinyMCE很困难,因为默认情况下,tinymce初始化是全局的。

要提高性能,请尝试使用精确模式并将ID作为选择器传递(请参阅tinymce文档),并在再次调用init之前始终检查textarea是否已初始化。 (因为您的观点可能不止一次呈现)

另外,我过去尝试了一种不同的方法,即在所有方法之前初始化,然后只需使用tinymce.exe命令和#34; mceAddEditor&#34;添加个别的。退回是将事件绑定到新添加的编辑器是很棘手的。