2016-11-29 34 views
0

我有这样的按钮的配置列表:添加多个按钮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 
       } 
      }; 
      } 
     }); 

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

回答

0

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

你碰到的问题是,如何变量在JavaScript的功能实际上是运行时间管理。单击功能实际上并没有运行,直到您点击一个项目,并在那时item指向数组中的最后一个项目。

编辑:看看这个TinyMCE的捣鼓这如何可能会发生:http://fiddle.tinymce.com/REfaab/1

+0

@Micheal:我这样做,但它并没有解决问题。你提到的'thisItem'变量仍然指向同一个'item'变量,所以它不会解决问题。 –

+0

@ R.Abbasi在我编辑的答案中看到我的编辑和TinyMCE小提琴链接。 –

+0

@Micheal,就像一个魅力!所以我们必须在设置中复制项目。非常感谢你的提示 –

相关问题