問題タブ [angularjs-watch]
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.
angularjs - angularjs :このエラーが何を意味するのか分かりますか?
こんにちは、私はこのエラーが発生しています:
https://docs.angularjs.org/error/ $rootScope/infdig?p0=10&p1=%5B%5B%22fn:%20parentValueWatch;%20newVal:%201;%20oldVal:%20undefined%22,%22inputValue;%20newVal :%201;%20oldVal:%20undefined%22%5D,%5B%22fn:%20parentValueWatch;%20newVal:%20undefined;%20oldVal:%201%22,%22inputValue;%20newVal:%20undefined;%20oldVal:%201 %22%5D,%5B%22fn:%20parentValueWatch;%20newVal:%201;%20oldVal:%20undefined%22,%22inputValue;%20newVal:%201;%20oldVal:%20undefined%22%5D,%5B%22fn :%20parentValueWatch;%20newVal:%20undefined;%20oldVal:%201%22,%22inputValue;%20newVal:%20undefined;%20oldVal:%201%22%5D,%5B%22fn:%20parentValueWatch;%20newVal:%201 ;%20oldVal:%20undefined%22,%22inputValue;%20newVal:%201;%20oldVal:%20undefined%22%5D%5D
エラー: $rootScope:infdig 無限 $digest ループ
10 回の $digest() 反復に達しました。中止します!最後の 5 回の反復で発生したウォッチャー: [["fn: parentValueWatch; newVal: 1; oldVal: undefined","inputValue; newVal: 1; oldVal: undefined"],["fn: parentValueWatch; newVal: undefined; oldVal: 1 ","inputValue; newVal: 未定義; oldVal: 1"],["fn: parentValueWatch; newVal: 1; oldVal: 未定義","inputValue; newVal: 1; oldVal: 未定義"],["fn: parentValueWatch; newVal : 未定義; oldVal: 1","inputValue; newVal: 未定義; oldVal: 1"],["fn: parentValueWatch; newVal: 1; oldVal: 未定義","inputValue; newVal: 1; oldVal: 未定義"]]
どのウォッチャーでこの問題を認識しているのか、またはなぜ突然エラーがスローされるのかを認識するのに苦労しています。昨日までは正常に動作していました。
どんな助けでも大歓迎です。
javascript - $watch が解雇されていない
ScrollSpy の AngularJS 実装(元の記事はこちら) のコードを使用していますが、ナビゲーションが動的に作成されたときに問題が発生しましたが、ナビゲーションが静的に作成されたときには機能します。
したがってscrollSpy
、のリストを監視するディレクティブがありspies
ます。spies
リストは基本的に、ユーザーがページをスクロールするときに強調表示するナビゲーション要素のリストです 。そのようにコントローラのメソッドをspies
介して追加されますaddSpy
scrollSpy
関数は常に呼び出されaddSpy
ますが、スパイを動的に追加すると、そのリストの $watch は起動されず、ナビゲーション項目が静的に作成されたときに起動されます。
$watch が起動されない理由を理解できる人はいますか? 追加しようとし$scope.$apply
ましたが、既にダイジェスト サイクル内にあると表示されました。
javascript - 未定義の変数を選択するAngular $watchコマンド
angularを使用して無線入力を繰り返すHTMLコードがあります。
現在持っている機能を示す plunkr を作成しました。
http://plnkr.co/edit/n5OZVlbiwToHsuvGN3QI
繰り返しコードは、トップ レベルのスコープにキャプチャする必要がある変数にバインドされます。($parent.selectedType および $parent.selectedSpecies)
コードは HTML ドキュメントで正しく表示されますが、ng-model からのデータ バインディングは機能しません。
したがって、次のように $scope.$watch コマンドを設定しました。
typeName 変数の変更を監視し、変更されたら $scope.selectedType をラジオ ボタンで選択したものに設定します。
ただし、このコードを実行しようとすると、 $scope.$watch 部分が型定義の直後にあるにもかかわらず、「型が未定義です」というメッセージが表示され続けます。
$watch しようとすると型が未定義になるのはなぜですか?
編集:問題はより深刻でした-それは、 $scope.type.selected.forEach() が認識される関数ではないという事実に由来します。forEach() は関数である必要がありますが、何か不足していますか?
angularjs - 角度バインディングはどのように発生しますか?
以下は、angularJS でバインディングがどのように発生するかについての私の理解です。専門家がフィードバック/コメントを提供できれば素晴らしいと思います..
angularJS が {{myVar}} (および {{anothervar}}) に遭遇するとすぐに、(変数ごとに) ウォッチャーが内部的に作成されます。このウォッチャーは、コントローラー 'ctrlA' の $scope 用に作成されます。
関数が $timeout や ng-click などで呼び出されるたびに、それらは $scope.apply() 内に埋め込まれます。関数が実行された後 (一部のスコープ変数が変更される可能性があります)、$apply は rootScope でダイジェストを呼び出します。これにより、アプリ全体の変数が UI と同期されます。
$scope.digest が呼び出されると、そのスコープのすべてのウォッチャーを反復処理します。次に、変数の現在の値を取得し、変更されたかどうかを確認します。変更された場合は、ウォッチャー ハンドラーを呼び出します (新しい値を反映するように html を変更します!)。
ここで質問があります。angularJSストアには、ウォッチャーへの参照とそのウォッチャーの現在の値を含む、すべてのスコープ用のある種のキーマップ(またはデータ構造)がありますか?? 何かのようなもの:
javascript - $scope.user={pwd1:''} のように使用しても $watch がモーダルで機能しない
私のプランカーのリンクを参照してください: http://plnkr.co/edit/0vOjw0?p=preview
index.html
registration.html
script.js
私が直面している問題は、パスワード テキスト ボックスに書き込むと、$watch がモーダル インスタンス コントローラーで呼び出されないことです。しかし、同じ単純なコントローラーに書き込むと機能します。助けてください!!
javascript - Angular でウォッチャーと見なされるものは何ですか?
Angularで「ウォッチャー」と見なされるものは何ですか? ウォッチャー自体がウォッチャーの唯一のタイプですか、それともウォッチャーなどの他の Angular 構成要素ngModel
ですか?
それとも全体像を見逃していますか?たとえば、ウォッチャーはディレクティブを有効にするのが好きngModel
ですか?
更新:ウォッチャーがいつ存在するかを知る方法はありますか? テストでは、scope.$digest() を呼び出すタイミングを知りたい
javascript - $scope.$watch ディレクティブによって変更された値をキャッチしない
私のディレクティブはスパンにフォーカスを与え、boolean値を割り当てます。つまり、shifttab を押すたびに focusToSpan を true に割り当てますが、この変更はコントローラーとテンプレートに反映されません。以下のように focusToSpan 変数の $scope.$watch でチェックしました
指令
コントローラ
ディレクティブでコントローラー変数に加えられた変更が、コントローラーとテンプレートにどのように反映されるかを知っていますか。ありがとう、バラジ。
angularjs - ウォッチに設定した変数を誰が変更したかに関する情報を取得するにはどうすればよいですか (Angular)
例
$scope.$watch('data', function(){});
関数はいつdata
変更されるかを開始しますが、変更の原因となる関数を知りたい場合。