2012-05-03 13 views
-1

は、追加用と編集用の2つのダイアログインスタンスを作成する方が良いですか、1つのダイアログを使用できますか?追加または編集するための1つまたは2つのダイアログインスタンス?

これは、私は現在、自分自身を繰り返してはいけませんDRY原則パー

 // Add Dialog 
     $('#addProgramDialog').dialog({ 
      autoOpen: false, 
      width: 400, 
      height: 500, 
      title: 'Add Program', 
      buttons: { 
       'Cancel': function() { 
        $(this).dialog('close'); 
       }, 
       'Save': function() { 
        saveProgramRequest(); 
       } 
      } 
     }); 


     // Edit Dialog 
     $('#editProgramDialog').dialog({ 
      autoOpen: false, 
      width: 400, 
      height: 500, 
      title: 'Edit Program', 
      buttons: { 
       'Cancel': function() { 
        $(this).dialog('close'); 
       }, 
       'Update': function() { 
        updateProgramRequest(); 
       } 
      } 
     }); 
+0

これは、http://www.ux.stackexchange.comの方が適切な場合があります。あなたは、両方のダイアログを同時に表示するか、より多くの情報を含む単一のダイアログを表示することについて話しますか? – Cristy

+0

'#addProgramDialog'、' Add Program'などをパラメータとして追加することができる関数/オブジェクトを作成することが可能かどうかはわかりませんが、DRYは素晴らしい解決策になります。 –

+0

この2つの機能をDRYコーディングに組み合わせることはできます。単純にいくつかの変数を作成し、タイトルの代わりに: 'Add Program' use title:myVariable、条件文でダイアログ呼び出しの前に設定された変数。 – Cristy

答えて

1

を使用していますものです。あなたの例では、width、height、autoOpenパラメータ、およびCancelボタンの宣言を複製しています。 jQueryの各メソッドを使用してダイアログをループし、必要に応じてカスタマイズするだけで、これを防ぐことができます。例として: - http://jsfiddle.net/YTbnN/

$('#addProgramDialog, #editProgramDialog').each(function(index, node) { 
    var options = { 
     //autoOpen: false, 
     width: 400, 
     height: 500, 
     buttons: { 
      'Cancel': function() { 
       $(this).dialog('close'); 
      } 
     } 
    }; 

    if (node.id == "addProgramDialog") { 
     options.title = 'Add Program'; 
     options.buttons['Save'] = function() { 
      saveProgramRequest(); 
     } 
    } else { 
     options.title = 'Edit Program'; 
     options.buttons['Update'] = function() { 
      updateProgramRequest(); 
     } 
    } 

    $(node).dialog(options); 
}); 

ここに住んで、この例を示すために、jsFiddleです。

関連する問題