我目前传入TinyMCE的源作为依赖,然后调用tinyMCE.init({}); 但它没有初始化TinyMCE的。 当我CONSOLE.LOG TinyMCE的,它返回TinyMCE的对象。 代码示例如下:
define([
'jQuery',
'Underscore',
'Backbone',
'TinyMCE'
], function($, _, Backbone, tinyMCE) {
tinyMCE.init({
mode: "exact",
elements: $('textarea'),
theme: "advanced",
theme_advanced_toolbar_location: 'top',
theme_advanced_buttons1: 'bold,italic,underline,bullist,numlist,link,unlink',
theme_advanced_buttons2: '',
theme_advanced_buttons3: '',
theme_advanced_toolbar_align: 'left',
plugins: 'paste,inlinepopups',
width: '100%',
height: textarea.attr('data-height'),
oninit: function () {
console.log('TargetTD :');
console.log(targetTD);
}
});
}
});
有同样的问题。 我的解决办法是直接使用TinyMCE的jQuery插件,而不是TinyMCE的。 这样,它工作正常。
define(['jquery', 'tiny_mce/jquery.tinymce'], function ($) {
$('textarea').tinymce({
script_url : 'js/tiny_mce/tiny_mce.js',
theme : 'advanced',
theme_advanced_buttons1 : 'fontselect,fontsizeselect,forecolor,bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,removeformat,indent,outdent,numlist,bullist,copy,paste,link',
theme_advanced_buttons2 : '',
theme_advanced_buttons3 : '',
theme_advanced_toolbar_location : 'top',
theme_advanced_toolbar_align : 'left'
});
});
您可以使用“垫片”对于requirejs 2.1.0或更高,见下面的例子主脚本:
requirejs.config({
baseUrl: "js",
paths: {
tinyMCE: 'libs/tinymce/tiny_mce'
},
shim: {
tinyMCE: {
exports: 'tinyMCE',
init: function () {
this.tinyMCE.DOM.events.domLoaded = true;
return this.tinyMCE;
}
}
}
});
requirejs([
'tinyMCE'
], function (tinyMCE) {
console.log(tinyMCE);
// your code here
});
编辑 :我添加iimuhin的从下面代码片段中的注释。 它似乎并没有它的工作; 我说,因为未来的搜索将欣赏避免添加IE头痛。
您可以在骨干视图实现了tinyMCE如常。 但是,你必须等待,直到视图的El正在初始化tinyMCE的前插入DOM。 在JavaScript,现在的方式,当元件被插入在DOM来检测。 但是,当一个骨干视图rended(Backbone.View.render())时,元件将被在当前浏览器的处理后的DOM插入。 使用“的setTimeout”具有1毫秒(这将直接执行在未来浏览器的过程中码)来初始化的小MCE元件。
var FormTextArea = Backbone.View.extend({
template : _.template('<%=value%>'),
tagName: 'textarea',
className: "control-group",
render: function(){
this.$el.html(this.template(this.model.toJSON()));
setTimeout(_.bind(this.initMCE, this), 1);
return this;
},
initMCE: function(){
tinymce.init({selector: 'textarea'});
}
});
var v = new FormTextArea({
model: new Backbone.Model({value: '<h2>Heading 2</h2><p>A paragraph here</p>'})
});
$('body').append(v.render().el);
这里是一个的jsfiddle:
http://jsfiddle.net/pCdSy/10/