問題タブ [rootscope]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - AngularJS ファクトリー $rootScope.$on クリーンアップ
サービス内から $rootScope.$on イベント サブスクリプションをクリーンアップするにはどうすればよいですか?
$rootScope.$on イベント サブスクリプションが宣言されている、AngularJS アプリケーションのさまざまなコントローラーで初期化されている Factory があります。私の問題は、コントローラーが破棄されると、イベントがクリーンアップされないことです。読んだところ、コントローラーとディレクティブを使用すると、クリーンアップのために $destroy に $watch をセットアップできることがわかりましたが、サービスについてはどうでしょうか? サービスをどのようにクリーンアップしますか?
これが私の問題の基本的なプランカーです: http://plnkr.co/edit/dY3BVW。「子の作成」ボタンを何度もクリックして、$rootScope.$on でファクトリを初期化する子コントローラーを初期化します。[ブロードキャスト] をクリックしてブラウザー コンソールを開くと、子コントローラーが破棄された後に発生する一連のイベント サブスクリプションが表示されます。
プランカーからのスニペット:
angularjs - この関数で $rootScope は何をしていますか?
Angular docsからのディレクティブ単体テストのこの例では:
誰かが it 関数の要素変数宣言で ($rootScope) が何をしているのか説明できますか?
どんな効果があるのかわからない。
angularjs - angular.element().scope().$root と angular.element().injector().get('$rootScope') の違い
コード内の特定の問題の根本原因を見つけるのが非常に難しいと感じています。ソースコードはこちら
にアクセスしたいのです$rootScope
が、方法の 1 つが失敗しています。
ルート 1:
ng-scope
classで DOM の最初の要素を取得し、 a を実行しangular.element(elem).scope().$root
てルートを取得します。
ルート 2:
クラスでDOMの最初の要素を取得しng-scope
、要素のインジェクターを取得します.angular.element(elem).injector()
injector().get('$rootScope')
$rootScope
ルート 1でコードを実行すると、この要素で が使用できないため、未定義にangular.element(document.querySelector('.ng-scope')).scope()
なります。scope
を取得しようとしましたがangular.element(elem).data()
、空のオブジェクトが取得されました。
これは、角度がまだこの要素を通過していないことを意味しますか? ng-scope
はいの場合、角度がまだこの要素を通過していない場合、クラスが既に適用されているのはなぜですか?
$rootScope
throughinjector().get('$rootScope')
と throughのアクセスの違いは何scope().$root
ですか? ルート 1が失敗するのはなぜですか?
ルート 1:
ルート 2:
angularjs - Angular $broadcastは、ページの更新後にのみ更新されます
こんにちは、Angular で問題が発生しまし$scope.$broadcast
た。ページが 1 回更新されると、リッスン値のみが更新されます。
1 つのコントローラー:
リスナー:
ページを 1 回更新すると機能しますが、初期ロード時にリスナーが機能しませんか? 何か案は?
javascript - angularjs の `$rootScope` に変更を反映しない
に変更を反映するのに苦労しています$rootScope
。私が理解しているように (私は に非常に慣れていないことに注意してくださいangular
)、$rootScope
は を横切って表示されcontrollers
ます。私がやろうとしているのは、値を更新し、ページ$rootScope
でその値を読み取ろうとすることです。html
問題は、変更が適用され$rootScope
ても私のビューに反映されないことです。以下はコードです
値に応じてdiv
表示/非表示にしたい
しかし、 を作成して$rootScope.logged = true
もビューは表示されません。私の質問は
1 - 何が間違っているのでしょうか?
2 - そのようなことを行う最も角度のある方法は何ですか?
angularjs - angularjsでページのアンロードを検出する
angularjs アプリケーションに対してグローバルに必要な JavaScript オブジェクトがあります。アプリケーションがアンロードされようとしているとき (ページの更新またはその他のシナリオにより)、オブジェクトをブラウザー ストレージに保持したいと考えています。オブジェクトを $rootScope に追加すると、オブジェクトをグローバルにするという最初の要件が満たされると思いますが、onbeforeunload
イベント中にオブジェクトをストレージに書き込むには、$rootScope 変数へのアクセスが必要になります。angularjsでページのアンロードイベントを検出することは可能ですか?