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

时间:2016-11-29 08:46:16

标签: javascript tinymce

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

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

但是当我点击第一个按钮时,它会显示第二个按钮的标题。所有按钮配置都指的是最后添加的按钮。我知道问题是关于'项目'在循环中(所有按钮引用相同的项目对象,这是最后一个)但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

尝试为onclick函数内的项创建一个本地范围的变量:

您遇到的问题是在实际运行该函数时如何在JavaScript中管理变量。在您单击某个项目之前,实际上不会运行click函数,此时item指向数组中的最后一项。

编辑 :查看这个TinyMCE小提琴,看看它是如何发生的:http://fiddle.tinymce.com/REfaab/1