問題タブ [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.

0 投票する
0 に答える
110 参照

javascript - $q は角度で保留中のタスクを削除しません

$qプロミスをモックまたは作成するために使用する angular のテストを作成すると、遅延タスクが作成されます。

$rootScope.$apply呼び出すことでこれらの約束を解決するはずだと思いました。

しかし、これを行うと$timeout.verifyNoPendingTasks()、例外がスローされます。

エラー: フラッシュする遅延タスク (1): {id: 0, time: 0}

これはなぜで、どのように修正するのですか?

0 投票する
3 に答える
11274 参照

angularjs - $rootScope をリセットするには?

ユーザーがログアウトしたら、$rootScope をクリーンアップする必要があります。試してみ$rootScope.$destroy()ましたが、うまくいきませんでした。$rootScope のすべての値をループして削除する方法、または単純にリセットする方法はありますか?

0 投票する
3 に答える
9380 参照

javascript - 関数で $rootScope を使用することが推奨されないのはなぜですか?

Angularjs の FEQ を調べているときに、以下の記事を見ました。

$rootScope は存在しますが、悪用される可能性があります

Angular のスコープは階層を形成し、プロトタイプとしてツリーの最上部にあるルート スコープから継承します。ほとんどのビューには独自のコントローラー、つまりスコープがあるため、通常、これは無視できます。

場合によっては、アプリ全体に対してグローバルにしたいデータの断片があります。$rootScopeこれらについては、他のスコープと同様に値を挿入して設定できます。ng-showスコープはルート スコープから継承するため、これらの値は、 local の値と同様に、ディレクティブに関連付けられた式で使用できます$scope

もちろん、グローバルな状態は最悪であり$rootScope、(できれば) どの言語でもグローバル変数を使用するように、慎重に使用する必要があります。特に、コードには使用せず、データのみに使用してください。に関数を配置したい場合は$rootScope、ほとんどの場合、必要な場所に挿入でき、より簡単にテストできるサービスに配置することをお勧めします。

逆に、データのビットを保存して返すことだけを目的とするサービスを作成しないでください。

— AngularJS FAQ - $rootScope は存在しますが、悪用される可能性があります

だから私の疑問は、なぜ $rootScope がグローバル関数としての関数に推奨されないのですか? パフォーマンスの問題はありますか?

0 投票する
2 に答える
68 参照

angularjs - $rootScope、$compile、および$routeを使用して、角度のあるコントローラーで別のコントローラーを呼び出すことができません

reportsController ページのリロード時に、reportsController で homeController を呼び出すつもりですが、どのように呼び出すことができますか?

0 投票する
1 に答える
933 参照

javascript - イベントボタンを2回クリックした後に角度ルートスコープ変数のみが更新されるのはなぜですか?

FileReaderを使用してアップロードされたファイルを読み取り、そのデータを表示すると、html の rootScope 変数が 2 回クリックすると更新されることがわかりました。しかし、変数が更新されているため、最初のクリック後にコードが実行されたと確信しています。

http://jsfiddle.net/f8Hee/1/

これは、fileReader を使用するためにインターネットで見つけたフィドルですが、それでも同じ問題があります。{{ data }}を更新するには、 [追加]ボタンを 2 回クリックする必要があります。

コードはからのものです > AngularJS を使用したファイルのアップロード