それは何ですか(例として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()値を変更する
- 同じ要素で定義された属性への変更を監視します(実際には、監視されるのは属性の値です。これらはスコーププロパティであるため、ディレクティブは変更を「モデル」で監視します)
- 等
<a href="...">
HTMLには、、、、
<img src="...">
の
ようなものが
<br>
あり
<table><tr><th>
ます。a、href、img、src、br、table、tr、thをどのように説明しますか?それがディレクティブです。