web-dev-qa-db-ja.com

Angular.jsで他の人に注入できる「もの」は何ですか?

私はAngularの依存性注入を理解するのに少し苦労しています。私の質問は、コントローラー、ファクトリー、プロバイダーなどの「タイプ」のどれを、同じ「タイプ」の他のインスタンスを含めて他の人に注入できるかを誰でも説明できますか?

私が実際に探しているのは、y/nで満たされたこのテーブルです。同じ行/列を持つセルの場合、ある「タイプ」の値を別の「タイプ」の値に注入することを意味します

+----------------+----------+------------+-----------+---------+--------+----------+---------+-------+
| Can we inject? | Constant | Controller | Directive | Factory | Filter | Provider | Service | Value |
+----------------+----------+------------+-----------+---------+--------+----------+---------+-------+
| Constant       |          |            |           |         |        |          |         |       |
| Controller     |          |            |           |         |        |          |         |       |
| Directive      |          |            |           |         |        |          |         |       |
| Factory        |          |            |           |         |        |          |         |       |
| Filter         |          |            |           |         |        |          |         |       |
| Provider       |          |            |           |         |        |          |         |       |
| Service        |          |            |           |         |        |          |         |       |
| Value          |          |            |           |         |        |          |         |       |
+----------------+----------+------------+-----------+---------+--------+----------+---------+-------+
139
user1527166

BinaryMuseが、プロバイダー、工場、サービスはすべて同じものであるという驚くべき答えを非常に重要にしています。

以下は、彼女のポイントを視覚的に説明できると思う画像です。

AngularJSはすべて単なるプロバイダーですhttp://www.simplygoodcode.com/wp-content/uploads/2015/11/angularjs-provider-service-factory-highlight.png

13
Luis Perez

ミシェルによる素晴らしい答え。 ディレクティブを挿入できることを指摘したいだけです。 myThingという名前のディレクティブがある場合は、myThingDirectiveを使用してそれを挿入できます。 これは不自然な例です

上記の例はあまり実用的ではありませんが、ディレクティブを挿入する機能は、 そのディレクティブを装飾する が必要な場合に役立ちます。

7
Gil Birman