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);
}
うん。もっと良い方法があるはずです。たぶん、ディスパッチャは価値があるよりも面倒です。関連する投稿の いくつかを見てきましたが、この正確な状況にそれらを適用する方法がよくわかりません。