3

ディレクティブで 1 つのオブジェクトのプロパティ (実際には - clientHeight) を見ることができます。しかし、この高さに応じて他のオブジェクトの padding-top を変更するにはどうすればよいでしょうか? jQuery を使用してこれを行う方法は知っていますが、Angular の方法を探しています。

Angular では、ディレクティブを使用してページ要素にアクセスできます。わかりましたが、同じディレクティブで他のページ要素にアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

5

これを行う方法はいくつかあります。以下のすべての提案について、2 つのディレクティブがあると仮定します。1 つは clientHeight を監視するためのもので、もう 1 つはパディングを調整するためのものです。

  • サービスを作成します (両方のディレクティブに挿入されます)。最初のディレクティブで、サービス内のオブジェクト プロパティを変更します (例: someObj.prop1)。もう 1 つのディレクティブ $watches は、そのオブジェクト プロパティです。
  • イベントを使用します。最初のディレクティブでイベントを $emit または $broadcast し、2 番目のディレクティブで $on (リンク関数または独自のコントローラー) を使用してそれをリッスンできます。
  • 祖先関係がある場合はrequire、子孫ディレクティブで祖先ディレクティブのコントローラーを使用できます。例については、 AngularJS: 別の親を持つコンポーネントを再利用するを参照してください。

  • 推奨されませんが、別のオプション: サービスの代わりに $rootScope を使用します: $rootScope を両方のディレクティブに挿入します。最初のディレクティブで $rootScope のオブジェクト プロパティを変更します。もう 1 つのディレクティブ $watches は、そのオブジェクト プロパティです。

于 2013-02-28T15:58:28.227 に答える