Angular 1.5 コンポーネントと古いディレクティブ - リンク関数はどこにありますか? 質問する

Angular 1.5 コンポーネントと古いディレクティブ - リンク関数はどこにありますか? 質問する

私は最近この素敵な本を読んでいます記事Angular 1.5 の新しい.component()ヘルパーについて。これは、最終的には誰もが Angular 2 に移行するのに役立つはずです。すべてが素晴らしくシンプルに見えますが、コンポーネント内の DOM 操作に関する情報は見つかりませんでした。

templateただし、関数になり、引数を受け入れることができるプロパティ$elementがあります$attrs。それでも、それが関数の代わりとなるかどうかはわかりませんlink。そうではないようです。

ベストアンサー1

編集 2/2/16:1.5 のドキュメントでは、次のコンポーネントがカバーされるようになりました:https://docs.angularjs.org/guide/コンポーネント


いくつかの読書に基づいたいくつかの考え(以下のリンク):

  • コンポーネントはディレクティブの代わりではありません。コンポーネントは、テンプレートを使用してコントローラを整理する特別なタイプのディレクティブです。

  • コンポーネントにはリンク機能がなく、コントローラーは依然として DOM 操作を処理する場所ではありません。

  • DOM 操作が必要な場合、コンポーネントはリンク関数にその DOM 操作を組み込む他のディレクティブを使用できます。

これを理解するまでにしばらく時間がかかりましたが、理解すると、ある程度意味がわかりました。コンポーネントはディレクティブですが、すべてのディレクティブがコンポーネントであるわけではなく、またコンポーネントである必要もありません。

リンク関数に関する質問は自然なものです。あるいは、コンポーネントがディレクティブに取って代わるものだと思っていた私にとってはそうでした。なぜでしょうか? DOM 操作をディレクティブのリンク関数内に配置するように教えられているからです。「DOM を変更するディレクティブは、通常、リンク オプションを使用して DOM リスナーを登録し、DOM を更新します。」https://docs.angularjs.org/guide/directive

もしあなたがその仮定(コンポーネントがディレクティブを置き換える)で実行しているなら、Angularのドキュメントは質問に答えていないことに気づくでしょう。なぜなら、コンポーネントの目的がわかれば、それは正しい質問ではないからです。(コンポーネントは$compileProvider ドキュメントではない指令文書

背景資料

私が上で述べたことは、実際には、コンポーネントとディレクティブに関する (これまでのところ) おそらく最高の議論である Todd Motto の発言を言い換えたものです。

https://www.reddit.com/r/angularjs/comments/3taxjq/angular_15_is_set_to_introduce_the_component/

それらのコメントをより一般的な記事にまとめると役に立つかもしれません。

コンポーネントに関するほとんどの記事ではリンク機能について言及されていません (だからといってこれらの記事が優れていないということではありません)。

https://toddmotto.com/exploring-the-angular-1-5-component-method/

https://medium.com/@tomastrajan/component-paradigm-cf32e94ba78b#.vrbo1xso0

https://www.airpair.com/angularjs/posts/component-based-angularjs-directives

または、リンク関数が言及されている場合は括弧内に表示されます。

http://teropa.info/blog/2015/10/18/refactoring-angular-apps-to-components.html

1つの記事コンポーネントは「リンク関数の代わりにコントローラーを使用する」と述べています。しかし、これは「代わりに」の状況ではありません。コントローラーはリンク関数の代わりではありません。

おすすめ記事