2

たとえば、StackExchange が提供するものと同様のタグ機能を Web サイトに追加する必要があるとします。入力バーに選択したタグが表示され、何かを入力すると候補のリストが表示されます。かなり標準的なもの。

私は次のことをします:

  • タグ モジュールを作成する
  • addTagService を使用してタグをフェッチし、removeTag、 、 ..などのメソッドを宣言するタグ コントローラを追加しfindSimilarTagsます --> つまり、$scopeモデル データを使用します
  • add()タグモジュールのレイアウトを指定するテンプレートを使用してディレクティブを追加し、コントローラーメソッドを呼び出すメソッドを使用しremove()ます。

add()このようにして、ユーザーからのイベント (内部呼び出しなど) とコードの他の部分 (何かが発生したときにaddTag()内部で呼び出すウォッチャーなど)からのイベントを区別できます。addTag()

要約すれば:

  • コントローラー: モデルからのデータを処理します (例: サービスを使用)
  • ディレクティブ: DOM 操作とイベントを処理し、コントローラーを使用して実際の作業を行います

これは理にかなっていますか?Googleがディレクティブをコントローラーから完全に分離するのはなぜですか? ディレクティブはより「スマート」で、データを直接処理する必要がありますか?

4

1 に答える 1