Tinymce 如何动态创建自定义控件
我试图添加一个自定义的mymenubutton,菜单项基于另一个下拉菜单的选定值,该值返回一个包含大量项的json数组 因此,我使用了第一次创建mymenubutton的示例,但是当下拉列表更改时,我应该如何重新初始化该控件并将json数组重新绑定到mymenubuttonTinymce 如何动态创建自定义控件,tinymce,Tinymce,我试图添加一个自定义的mymenubutton,菜单项基于另一个下拉菜单的选定值,该值返回一个包含大量项的json数组 因此,我使用了第一次创建mymenubutton的示例,但是当下拉列表更改时,我应该如何重新初始化该控件并将json数组重新绑定到mymenubutton function generateTokensList(result) { tinymce.create('tinymce.plugins.ExamplePlugin', {
function generateTokensList(result) {
tinymce.create('tinymce.plugins.ExamplePlugin', {
createControl: function (n, cm) {
switch (n) {
case 'mysplitbutton':
var c = cm.createSplitButton('mysplitbutton', {
title: 'My split button',
image: 'some.gif',
onclick: function () {
alert('Button was clicked.');
}
});
c.onRenderMenu.add(function (c, m) {
m.add({ title: 'Tokens', 'class': 'mceMenuItemTitle' }).setDisabled(1);
var insertVar = function (val) {
return function () { tinyMCE.activeEditor.execCommand('mceInsertContent', false, val); }
};
for (var i = 0; i < result.length; i++) {
var field = result[i].field;
var variable = insertVar(result[i].field);
m.add({ title: result[i].name, onclick: variable });
}
});
// Return the new splitbutton instance
return c;
}
return null;
}
});
tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
}
function generateTokensList(结果){
create('tinymce.plugins.ExamplePlugin'{
createControl:函数(n,cm){
开关(n){
“mysplitbutton”案例:
var c=cm.createSplitButton('mysplitbutton'{
标题:“我的拆分按钮”,
图片:“some.gif”,
onclick:function(){
警报('按钮已单击');
}
});
c、 添加(函数(c,m){
m、 添加({title:'Tokens','class':'mceMenuItemTitle'});
var insertVar=函数(val){
返回函数(){tinyMCE.activeEditor.execCommand('mceInsertContent',false,val);}
};
对于(变量i=0;i我自己解决了这个问题。将数据绑定到一个变量,每次只调用var
c.onRenderMenu.add(function (c, m) {
m.add({ title: 'Tokens', 'class': 'mceMenuItemTitle' }).setDisabled(1);
var insertVar = function (val) {
return function () { tinyMCE.activeEditor.execCommand('mceInsertContent', false, val); }
};
for (var i = 0; i < tokens.length; i++) {
var field = tokens[i].field;
var variable = insertVar( '[['+tokens[i].name+']]');
m.add({ title: '[['+tokens[i].name+']]', onclick: variable });
}
});
c.onRenderMenu.add(函数(c,m){
m、 添加({title:'Tokens','class':'mceMenuItemTitle'});
var insertVar=函数(val){
返回函数(){tinyMCE.activeEditor.execCommand('mceInsertContent',false,val);}
};
for(var i=0;i
另一个下拉列表是tinymce UI按钮列表的一部分或该页面上的其他地方?用户在初始化tinymce之前是否选择了该下拉列表?或者,在编辑器处于活动状态时,用户是否可能更改下拉列表?当然,我一定会这样做!tinymce将首先基于默认下拉值填充,但之后用户可以更改下拉值,tinymce应重新绑定UI按钮列表。