$scope.$watch
データ モデルを取得するための呼び出し後に評価されないという問題があります。説明しますが、せっかちな人のために、このフィドルに基づいて何が起こっているのかを理解できるかもしれません: http://jsfiddle.net/ADukg/3964/。
私たちの Angular プロジェクトでは、いくつかのディレクティブに独自のデータ モデルを構築させます。これは、含まれている他のディレクティブに渡されることもあります。この場合、独自のモデルを構築するディレクティブはmyMessages
であり、そのデータが渡されるディレクティブは ですmyObjects
。
ディレクティブは、関連するメッセージをいつでも取得するためにmyMessages
呼び出されるサービスに依存しています (コードでは、これは値などに基づいています)。私の例では、パラメーターを無視して、データを直接返しました。messageManager
$routeParams
http://localhost/messages/34
興味深いのは、55 行目と 68 行目 (ラッピング コール) をコメント アウトするとsetTimeout
、このコードは "問題なく" 動作することです (引用符で囲みます。これは、実際に適切なプラクティスを使用しているかどうかがよくわからないためです)。 )。ただし、HTTP 要求をシミュレートするために呼び出しを保持すると、ディレクティブのメソッドのobjects
スコープ変数の値が空になり、変数に対して設定されたウォッチが 2 秒後に実行に失敗します。myObjects
link
実際のメソッドへの呼び出しと内部の$scope.$apply
両方を明示的に呼び出して、時計をだまして再評価させようとしましたが、次のエラーが発生しました。ctrl.loadData()
loadData
$digest は既に進行中です
ドキュメントを見ると、これらの呼び出しを行うときにまだ Angular コンテキスト内にいるため、それは正しいようです (サービス内で ngResource を使用しているため、jQuery コンテキストや何か奇妙なものを呼び出していません)。objects
何を試しても(関数の3番目の$scope.$watch
パラメータtrue
を
どんな助けでも大歓迎です。