0

モーダルを角度で処理する最良の方法を探していましたが、達成するためにコントローラから切り離す必要があるという印象を受けていますMVCにおける懸念の分離 しかし、ディレクティブやライブラリを使ってこれを実装する場合は、あまりにも多くのコードを追加するという膨大なオーバーヘッドの必要はありません。モダールを表示する:角度付きディレクティブ/ライブラリVS直接ネイティブjQuery /ブートストラップコール

にディレクティブを移植
$scope.saveChanges = function() { 
     $('#messageTitle').text('Done'); 
     $('#messageText').text('Changes have been saved.'); 
     $('#message').modal() 
    } 

:私たちはまったく同じことをやってますが、直接として使いやすいようにjQueryを使用してコントローラやサービスにブートストラップモーダルを示すために比較して、キックオフより通話やイベントとされているかのように効果的に思えますこのダイアログは、角度、外部ライブラリやカスタムコード(いずれかの方法で適用されます)内の依存関係間の追加のステップと設定を伴うモーダルを示すダイアログを実際に処理しています。これは実際には、ユーティリティメソッドのユーティリティメソッドの呼び出しを簡素化して、jQueryを使用してモーダルを表示するutilsファイルのようなものです。繰り返しますが、なぜ私は経験豊富な角度のエキスパートから期待していないのかを知るために啓発されるでしょう。

これを行うには正しい正しい方法が仮定されていること以外は、コントローラ内でDOMを参照しないでください。パフォーマンス、バグのあるコード、テストなどに影響を与えますか?

私が知っているのは、テストケースが簡単になる理由の1つです。もう一度、正当な理由はテストが正しくテストされた場合上記のコードのようにビジネスロジックのDOMを持つ問題はほとんどありません。これにはさらに多くの場合がありますが、それは何ですか?同じことがサービスに適用される場合、コントローラ/サービスからDOMを分離する最も効率的な方法は何ですか?現在の説明に

背景:

What's the correct way to trigger jQuery DOM Manipulation from within a controller?

Separating DOM manipulation from Angular controllers - Best Practice wanted

AngularJS - why manipulating DOM in controller is a bad thing?

Why is it considered a bad idea to manipulate DOM in controllers?

答えて

0

私の理解から、これらのコントローラはDOMを操作することはできません主な理由です:

  • 試験。テストケースまたはテストステップは、コントローラのロジックをテストする際に、きちんと構造化され、非常に容易にテスト可能です。ここでテストされているのは、本当にコントローラが責任を負うべきものです(モデル操作)。

  • 角度コードベースでうまく構成されたMVCコードを適用します。懸念の分離は、テストのプラスマークを与えるだけでなく、コードをより管理しやすくし、構造も整えます。

  • コントローラ内で悪いことがあるDOM操作について完全に確認して説明するために、より詳細な代替回答をお聞かせください。反対に、例外があるかどうかを知ることは面白いでしょう。他の人の情報と私の試みの答えについては、上記の理由が最もよく知られている理由であり、おそらく私の知る限りの唯一の理由であり、この点で受け入れられる理由は十分です。