TinyMCE SplitButton中的所有菜单项都使用相同的回调

时间:2010-07-20 18:34:46

标签: tinymce

我在TinyMCE中创建了一个SplitButton并且我使用for循环来添加按钮,但由于某种原因,按钮的onclick始终调用相同的按钮(for循环中的最后一个)。似乎每次添加菜单选项时,都会覆盖回调。

让我描述一下我的意思。

var c = cm.createSplitButton('optionsList', {
title : 'Options',
});

c.onRenderMenu.add(function(c, m){
var Opts1 = options[0];
var Opts2 = options[1];
var Opts3 = options[2];

var sub1 = m.addMenu({title: "Options 1"});
for(var x in Opts1){
    sub1.add({title: Opts1[x], onclick: function(){
        tinyMCE.activeEditor.execCommand('mceInsertContent',false,Opts1[x]);
    }});
}

var sub2 = m.addMenu({title: "Options 2"});
for(var y in Opts2){
    sub2.add({title: Opts2[y], onclick: function(){
        tinyMCE.activeEditor.execCommand('mceInsertContent',false,Opts2[y]);
    }});
}

var sub3 = m.addMenu({title: "Options 3"});
for(var z in Opts3){
    sub3.add({title: Opts3[z], onclick: function(){
        tinyMCE.activeEditor.execCommand('mceInsertContent',false,Opts3[z]);
    }});
}

});

菜单创建正确,但是例如,如果我选择“选项1”并选择任何选项,tinyMCE将打印该子菜单中的最后一个选项。我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:5)

我修好了,所以我会回答我自己的问题。我需要使用一个闭包。解决方案是:

var insertVar = function(val){
    return function(){tinyMCE.activeEditor.execCommand('mceInsertContent',false,val);}
};

var sub1 = m.addMenu({title: "Options 1"});
for(var x in Opts1){
    var variable = insertVar(Opts1[x]);
    sub1.add({title: Opts1[x], onclick: variable});
}
相关问题