検索

ホームページ  >  に質問  >  本文

angular.js - angular で $scope が更新されない問題

すみません、ng includeからヘッダー部分をインポートしたページを作りました(ログインボタンを表示するかどうかを決定するlogincontrollerが入っています) 同時にngrouteにログインページを定義しました。これもlogincontrollerを使用しています。データを取得した後、スコープにコールバックしましたが、同じコントローラーに2つのスコープがあるようです。これはなぜですか? (nginclude が完了すると、logincontroller 内のものが一度実行され、ログインページに入るときに再度トリガーされることがわかりました)

オンラインで説明されているように $apply() も試してみましたが、結果はエラーになります

リーリー

上記はタイムアウトにコンソールログを含むコントローラーのコードです。これを出力すると、3 つの場所で同じ ngcontroller を使用しているためでしょうか。タイムアウト時のコメント call $scope.user={islogged:1} は次のように出力されますが、これは私のタスクでは異常です。これらがすべて同じであることを願います。 リーリー

$scope.user={islogged:1} のコメントを解除して実行すると、3 つのコントローラーが正常に出力されます。

リーリー

================

再度テストしてみたところ、現在トリガーされている ngcontroller の値のみが変更されます。複数の ngcontroller がある場合、nginclude であっても ngview であっても、他の ngcontroller の値は変更されません。同じ ngcontroller によって変更されたデータを別の場所に同期するにはどうすればよいですか?

ringa_leeringa_lee2774日前1045

全員に返信(5)返信します

  • 世界只因有你

    世界只因有你2017-05-15 16:53:08

    同じスコープですか? ng-include新しいスコープが作成されます。

    コードを読んだ後

    確かに、各コントローラーは別個のインスタンスであり、相互に影響を与えません。データのステータスをグローバル (より高いレベル) スコープの下に置くことを検討できます。より良い方法は、サービスを通じて均一に管理することです

    例:

    リーリー

    返事
    0
  • 怪我咯

    怪我咯2017-05-15 16:53:08

    $scope.$apply() が機能しないのですが?

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-15 16:53:08

    2 つの場所に表示されるもの $scope が、一方が他方のサブスコープであるなどではなく、同じスコープであることを確認することが最善です。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-15 16:53:08

    コードを投稿した方が良いでしょう〜

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-15 16:53:08

    私も同じ問題に遭遇しました。 $scope を初めて変更したとき、インターフェース上のデータは移動しませんでしたが、インターフェースが変更されると (たとえば、フェードアウトし始めたとき)、データが変更されます。 $ スコープが再び変更されると、それに応じてインターフェイスも変更されます。

    $apply も使用してみましたが、エラーの長いリストが報告されます。何かがすでに使用されているなどと言われます...理解できません...解決策があることを願っています。

    返事
    0
  • キャンセル返事