我正在为 Web 应用程序在 JavaScript 中创建上下文菜单。菜单可以出现在许多上下文中,并且有不同的选择。对于每个上下文/选择,我可以有不同的功能:
grid1_delete()
grid1_duplicate()
grid2_delete()
grid2_add()
grid2_duplicate()
并在构建菜单时对其进行硬编码。我不喜欢的是可能会有很多重复的代码。所以我正在考虑使用调度程序函数,但它可能会导致可能很长的嵌套 switch 语句:
function contextMenuClick(context, menuItem) {
var action = menuItem.innerHTML;
switch (context) {
case 'grid1':
switch(action) {
case('delete'):
// do delete for grid1
break;
case('duplicate'):
// do duplicate for grid1
break;
default:
console.log('undefined action in contextMenuClick/grid1: ' + context);
}
break;
case 'grid2':
switch(action) {
case('add'):
// do add for grid2
break;
case('delete'):
// do delete for grid2
break;
case('duplicate'):
// do duplicate for grid2
break;
default:
console.log('undefined action in contextMenuClick/grid2: ' + context);
}
break;
default:
console.log('undefined context in contextMenuClick: ' + context);
}
呸。一定有更好的方法。也许调度员的麻烦多于它的价值。我查看了一些相关的 帖子,但我不太了解如何将它们应用于这种确切的情况。