在循环中的 TinyMce 中添加多个按钮不起作用

Adding multiple buttons in TinyMce in a loop doesn't work

我有一个这样的按钮配置列表:

var config = [{
  name: 'first',
  insertionConfig: {
    title: 'first button',
    onsubmit: function(){
    // do sth
    }
  }
},{
  name: 'second',
  insertionConfig: {
    title: 'second button',
    onsubmit: function(){
    // do sth
    }
  }
}
 ]

在我的 TinyMce 插件中,我想根据它们的配置添加所有按钮。所以它最终会像这样:

tinymce.PluginManager.add('myPlugin', function(editor, url) {
      for (var i in config) {
        item = config[i];
        editor.addButton(item.name, {
          text: item.name,
          onclick: function() {
            editor.windowManager.open({
                title: item.insertionConfig.title,
                onsubmit: item.insertionConfig.onsubmit
              }
            };
          }
        });

但是当我点击第一个按钮时,它显示第二个按钮的标题。按钮的所有配置均参考上次添加的按钮。我知道问题出在循环中的 'item'(所有按钮都指向相同的项目 object,这是最后一个),但我不知道如何解决它。

尝试在 onclick 函数内为 item 创建一个局部范围的变量:

您 运行 关注的问题是在函数实际 运行 时如何在 JavaScript 中管理变量。单击函数实际上并不是 运行,直到您单击一个项目并且那时 item 指向数组中的最后一个项目。

EDIT:检查这个 TinyMCE Fiddle 了解这是如何发生的:http://fiddle.tinymce.com/REfaab/1