gpt4 book ai didi

tinymce - 如何动态创建自定义控件

转载 作者:行者123 更新时间:2023-12-04 05:57:51 25 4
gpt4 key购买 nike

我正在尝试添加一个自定义的 mymenubutton,菜单的项目基于另一个下拉列表的选定值,它返回一个带有一堆项目的 json 数组。

所以我使用示例http://fiddle.tinymce.com/gaaaab第一次可以创建mymenubutton,但是当下拉列表发生变化时,我应该如何重新初始化这个控件并将json数组重新绑定(bind)到mymenubutton?

    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);
}

最佳答案

自己解决了这个问题。将数据绑定(bind)到一个变量,每次只需调用 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 });
}
});

关于tinymce - 如何动态创建自定义控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9302684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com