angular.js - angular で $scope が更新されない問題
ringa_lee
ringa_lee 2017-05-15 16:51:08
0
5
1038

すみません、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_lee
ringa_lee

ringa_lee

全員に返信(5)
世界只因有你

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

コードを読んだ後

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

例:

リーリー
いいねを押す +0
刘奇

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

いいねを押す +0
漂亮男人

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

いいねを押す +0
伊谢尔伦

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

いいねを押す +0
漂亮男人

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート