1

これが起こっている場所でコーディングしているアプリの単純化されたシナリオを使用して、Plunkerを準備しました。

シナリオの簡単な説明:

  • $scope にトランザクションのリスト (トランザクション タイプのオブジェクト) をロードするコントローラーがあります。
  • このコントローラーは、新規または更新されたトランザクション オブジェクトの永続化を担当するサービスによって生成されたイベントをリッスンし、モデルをリロードします。
  • ビューは ng-repeat でトランザクション リストをレンダリングします
  • すべてのトランザクションを個別に更新 (コミットまたはロールバック) できます
  • AngularJS アプリには、2 秒ごとに新しいトランザクション オブジェクトを作成する run() ブロックがあり、これらのトランザクションが外部ソース (サーバーに対する $http 要求など) からのものであることをシミュレートします。

サービスが生成するイベントを受け取った後、モデルがオブジェクトの新しいリストで再割り当てされるときに、ビューのリロードが行われないことがわかります。

私はこれで過去48時間髪を引っ張っています. この種の動作の最も一般的な原因は、AngularJS の外部でモデルを変更し、$apply() を呼び出さないことですが (私はそう思います)、そうではありません。

また、$scope.$$phase と $apply または $digest の呼び出しを手動でチェックしようとしましたが (これが潜在的に悪いと考えられる場合でも)、まったく成功しませんでした。

私は何か間違ったことをしていますか?これはバグですか?他に適用できる戦略はありますか?

4

1 に答える 1