Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tinymce 如何动态创建自定义控件_Tinymce - Fatal编程技术网

Tinymce 如何动态创建自定义控件

Tinymce 如何动态创建自定义控件,tinymce,Tinymce,我试图添加一个自定义的mymenubutton,菜单项基于另一个下拉菜单的选定值,该值返回一个包含大量项的json数组 因此,我使用了第一次创建mymenubutton的示例,但是当下拉列表更改时,我应该如何重新初始化该控件并将json数组重新绑定到mymenubutton function generateTokensList(result) { tinymce.create('tinymce.plugins.ExamplePlugin', {

我试图添加一个自定义的mymenubutton,菜单项基于另一个下拉菜单的选定值,该值返回一个包含大量项的json数组

因此,我使用了第一次创建mymenubutton的示例,但是当下拉列表更改时,我应该如何重新初始化该控件并将json数组重新绑定到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);
    }
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按钮列表。