それは何ですか(例としてjQueryの明確な定義を見てください)?
ディレクティブは、本質的には、AngularコンパイラーがDOMでそれを見つけたときに実行される関数†です。関数はほとんど何でもできるので、ディレクティブとは何かを定義するのはかなり難しいと思います。各ディレクティブには名前(ng-repeat、tabs、make-up-your-ownなど)があり、各ディレクティブはそれが使用できる場所(要素、属性、クラス)をコメントで決定します。
†ディレクティブには通常、(ポスト)リンク機能しかありません。複雑なディレクティブには、コンパイル関数、プリリンク関数、ポストリンク関数を含めることができます。
どのような実際的な問題と状況に対処することを意図していますか?
ディレクティブが実行できる最も強力なことは、HTMLを拡張することです。拡張機能は、アプリケーションを構築するためのドメイン固有言語(DSL)です。たとえば、アプリケーションがオンラインショッピングサイトを実行している場合、HTMLを拡張して、「ショッピングカート」、「クーポン」、「スペシャル」などのディレクティブを含めることができます。「 「div」や「span」ではなく、「オンラインショッピング」ドメイン(@WTKで既に述べたように)。
ディレクティブはHTMLをコンポーネント化することもできます-一連のHTMLをいくつかの再利用可能なコンポーネントにグループ化します。ng-includeを使用して多くのHTMLを取り込む場合は、おそらくディレクティブにリファクタリングするときです。
それが具体化する設計パターンは何ですか、あるいは、angularjsのMVC / MVWとされるミッションにどのように適合するか
ディレクティブは、DOMを操作し、DOMイベントをキャッチする場所です。これが、ディレクティブのコンパイル関数とリンク関数の両方が引数として「要素」を受け取る理由です。あなたはできる
- ディレクティブを置き換えるHTML(つまりテンプレート)の束を定義する
- イベントをこの要素(またはその子)にバインドします
- クラスを追加/削除する
- text()値を変更する
- 同じ要素で定義された属性の変更を監視します(監視されるのは実際には属性の値です。これらはスコーププロパティであるため、ディレクティブは「モデル」の変更を監視します)
- 等
HTMLでは、私たちのようなものを持って
<a href="...">
、
<img src="...">
、
<br>
、
<table><tr><th>
。a、href、img、src、br、table、tr、thとはどのようなものですか?それがディレクティブです。