たとえば、StackExchange が提供するものと同様のタグ機能を Web サイトに追加する必要があるとします。入力バーに選択したタグが表示され、何かを入力すると候補のリストが表示されます。かなり標準的なもの。
私は次のことをします:
- タグ モジュールを作成する
addTag
Service を使用してタグをフェッチし、removeTag
、 、 ..などのメソッドを宣言するタグ コントローラを追加しfindSimilarTags
ます --> つまり、$scope
モデル データを使用しますadd()
タグモジュールのレイアウトを指定するテンプレートを使用してディレクティブを追加し、コントローラーメソッドを呼び出すメソッドを使用しremove()
ます。
add()
このようにして、ユーザーからのイベント (内部呼び出しなど) とコードの他の部分 (何かが発生したときにaddTag()
内部で呼び出すウォッチャーなど)からのイベントを区別できます。addTag()
要約すれば:
- コントローラー: モデルからのデータを処理します (例: サービスを使用)
- ディレクティブ: DOM 操作とイベントを処理し、コントローラーを使用して実際の作業を行います
これは理にかなっていますか?Googleがディレクティブをコントローラーから完全に分離するのはなぜですか? ディレクティブはより「スマート」で、データを直接処理する必要がありますか?