[解決済み] ディレクティブテストにおける$applyと$digestの比較
2023-01-09 19:03:07
質問
スコープ上の特定の属性の状態に反応するディレクティブがあり、 テストでその属性を変更し、正しく反応することを確認したい場合、 その変更を行う最良の方法はどれでしょうか?
この両方のパターンを見たことがあります。
scope.$apply(function() {
scope.myAttribute = true;
});
と
scope.myAttribute = true;
scope.$digest();
両者の違いと、どちらが良いのか、その理由は?
どのように解決するのですか?
scope.$digest()
は現在のスコープと、その子スコープすべてでウォッチャーを起動します。
scope.$apply
は渡された関数を評価し
$rootScope.$digest()
.
最初のものは、現在のスコープとその子スコープのウォッチャーを評価する必要があるため、より高速です。2番目のものは、現在のスコープと子スコープのウォッチャーを評価する必要があるため、より遅いです。
$rootScope
とその子スコープ全てのウォッチャーを評価する必要があるためです。
ウォッチャーの一つでエラーが発生したときに
scope.$digest
を使っている場合、そのエラーは
$exceptionHandler
サービスでは処理されませんので、自分で例外を処理する必要があります。
scope.$apply
は
try-catch
ブロックを使い、すべての例外を
$exceptionHandler
.
関連
-
[解決済み】TypeError: window.initMap is not a function
-
[解決済み] AngularJS 。scope.apply()呼び出し時の$digest already in progressエラーを防ぐ。
-
[解決済み] クラスを条件付きで適用する場合の最適な方法は何ですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] angular.serviceとangular.factoryの比較
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
-
[解決済み】ディレクティブ定義のtranscludeオプションの理解?
-
[解決済み】AngularJSで属性を条件付きで適用するための最良の方法は何ですか?
-
[解決済み] Angular.jsディレクティブの動的テンプレートURL
-
[解決済み] angular ディレクティブは、ディレクティブの属性で指定された式で関数に引数を渡すことができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] angularJSのSTATEを理解する
-
[解決済み] AngularJSのグローバル変数
-
[解決済み] AngularJSのng-showとフェードアニメーション
-
[解決済み] ReferenceError: Angularは定義されていません。
-
[解決済み] ajaxリクエスト時にAngularjsのローディング画面が表示される。
-
[解決済み] どのようにangularJSでrouteProviderとlocationProviderを設定するのですか?
-
[解決済み] Jasmineの "callThrough "と "callFake() "の実用的な例が欲しい
-
[解決済み] ng-classを使った複数クラスの追加
-
[解決済み] ng-repeat内のng-click関数にパラメータを追加しても、うまくいかないようです。
-
[解決済み] AngularJSでEnterキーを押したときにフォームを送信する