0

顧客検索のディレクティブ (1 番目のディレクティブ) があるページがあるとします。検索を実行すると、Web サーバーから顧客のリストが返されます。

さて、上記のディレクティブ内に、顧客向けの情報を表示する 2 番目のディレクティブ (これを と呼びましょうcustomerRes) があります (これは、サイトの多くの場所で再利用される小さなウィジェットのようなものです)。この 2 番目のディレクティブの分離スコープ内に、results返された結果からバインドしたという属性があります。

最初のディレクティブには次のような宣言があります

<customer-res results="webserverResult">

ディレクティブ内customerResには、次のようなものがあります

<div ng-repeat="x in results>
{{name}} {{bla}}  ... bla bla
</div>

ユーザーが親ディレクティブをクリックするたびに、Web サーバーにリクエストが送信され、おそらく異なる結果が返されます。

質問: angular は、分離されたスコープにバインドされた値がディレクティブの外で変更されたことを実際に監視していますか、それとも無効になることを確認するために何かをする必要がありますか?

また、結果が返される前にページを読み込んでも、結果が返ってきたらページ要素を更新するべきではありませんか?

4

1 に答える 1

0

クールな方法は、自分で見つけることです。誤解しないでください。個人的には、angular で最初の一歩を踏み出すときにこれを行いました。ドキュメントを読むよりもフレームワークをより深く理解し、より簡単に忘れるのに役立ちます。

いつでも追加できます

scope.$watch('myVariable', function(value) { 
  console.log('myVariable changed to:', value);
})

ディレクティブに追加し、その値がいつ変更されるかを確認します。

双方向バインディングは、ページ全体をリロードする場合でも魅力的に機能します。ディレクティブの JS コードがなければ、これ以上正確にはなりません。しかし、分離されたスコープを使用する場合、おそらくディレクティブが必要です

scope: {
   myVariable: '='
}
<my-directive my-variable="results.entries"></my-directive>

ただし、ページをリロードすると、角度がゼロから再起動することに注意してください。各ディレクティブの意味は、そのリンク関数が一度呼び出され、内部で他の多くのことが呼び出されます。キーワードは angular のdigest cycle.

この(もう少し広い)答えを手伝ってくれることを願っています。

于 2015-01-14T19:59:38.127 に答える