在循环中的 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
我有一个这样的按钮配置列表:
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