問題タブ [angularjs-digest]
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 - Angular $watch がループしないようにする
入力された金額に自動的に小数点を追加する簡単な金額入力を作成中です。ただし、 $watch 関数が永遠にループしてからエラーになるという問題が発生しています。これは私が持っているものです:
任意の提案をいただければ幸いです。
angularjs - $digest() が Parse コールバックから自動的に呼び出されないのはなぜですか?
スコープ ($scope.makes) 内のデータにバインドされた select2 ドロップダウン リストがあります。それは ng-modal 内で「生きています」。
$scope.makes を Promise 内で更新します。これは Parse.com 呼び出し (parse.cloud.run) ですが、その後は DDL が新しいデータで参照されません。しかし、 $scope.$digest() の呼び出しを追加すると、機能します。何故ですか?
これは、モーダル コントローラーの関連部分です。
最後の行を削除すると、ドロップダウン リストが更新されません。
関連するモーダルのHTML部分は次のとおりです
javascript - Karma 単体テストでネストされた AngularJS promise を解決する
ネストされた promise を使用する関数をテストしようとしています (この関数は変更できないと仮定しましょう)。これらの約束を処理するには$rootScope.$digest()
、少なくとも 2 回呼び出す必要があります。$digest()
10msごとに呼び出すこの実用的なソリューションを思いつきました。
問題は、すべての promise を解決するのに十分な時間を消化するために必要なタイムアウト時間を見積もることです。サービスがローカルストレージなどに対して実際の非同期呼び出しを行うと、さらに複雑になります。
これを解決する別の方法はありますか?残りのすべての約束を取得する方法はありますか?
javascript - v1.2からアップグレードしようとすると「TypeError: Illegal invocation」
編集:これは Chrome v43 に関連しているようです。v42 にダウングレードすると、すべて正常に動作します。
編集: Angular の Github リポジトリに問題を提出しました。
angular.jsソースのreturn logFn.apply(console, args);
行ごとにエラーがスローされるようです
。12221
Chromium バグへのリンクは次のとおりです。
今何をすべきかのヒントはありますか?
アプリを AngularJS v1.2 から v1.3 または v1.4 に移行しようとしていますがTypeError: Illegal invocation
、Chrome を使用しています (win、osx、および ubuntu を試しました)。
スタック トレースはあまり役に立ちません。
これはAJAXリクエストと関係があるようですが、私も取得しています:
モデルクラスを更新するために使用$interval
しています(これはファクトリであり、$scope.client
このクラスに設定することでビューに反映されます):
に問題があると思います$digest/$apply
。これをデバッグするのに何時間も費やしましたが、何が起こっているのかまだわかりません。
さらなるデバッグへのポインタは大歓迎です。
javascript - AngularJS:コンソールから$scopeを編集するには?
ここ$scope
で受け入れられた回答ごとに変数にアクセスできます。ただし、コンソールから編集することはできません。つまり、プロパティの変更、関数の呼び出しなどです。これは可能ですか?
これが私が実験してきたテストコードです:
コンソールを使用してプロパティを編集するtext
と、変更されますが、ビューは変更されません。
$scope
ビューとすべての依存関係も更新されるように、コンソールから値とプロパティを変更するにはどうすればよいですか?
angularjs - ファクトリ内の $http によるデータの変更が DOM に反映されない
オブジェクトに基づいて動的フォームを作成しようとしています。例: 生成された選択ボックスにオプションが含まれるようにします。
マークアップ:
コントローラ:
工場:
データ ( $scope.selects ) は期待どおりに更新されますが、DOM は更新されません。これはおそらく、変更に応じて refactor.options() が再度呼び出されていないことを意味します。スコープ オブジェクトをファクトリに渡して $apply を呼び出して更新を強制しようとしましたが、うまくいきません。
私は何が欠けていますか?
angularjs - angular uiブートストラップdatepickerが「infdig」を引き起こす
アプリケーションで angular ui から datepicker を適用しようとしていますが、何らかの理由で次のエラーが発生します。
エラー: [$rootScope:infdig] 10 回の $digest() 反復に達しました。中止します!最後の 5 回の反復で発生したウォッチャー: [] http://errors.angularjs.org/1.3.15/ $rootScope/infdig?p0=10&p1=%5B%5D
このエラーがトリガーされる理由がわかりません。上記のリンクの説明には次のように書かれています。
このエラーは、アプリケーションのモデルが不安定になり、各 $digest サイクルが状態の変化とそれに続く $digest サイクルをトリガーするときに発生します。Angular はこの状況を検出し、無限ループによってブラウザーが応答しなくなるのを防ぎます。
これが私の状況にどのように当てはまるかはまったくわかりません。
次のような通常の入力フィールドを使用している場合:
問題はなく、日付は問題なく表示されますが、これは次のとおりです。
エラーになります。私より頭のいい人が、何が足りないのか教えてくれませんか。バックエンドから日付を読み込んで、日付ピッカーで現在の日付として表示しようとしています。
/よろしくクリス
angularjs - リストの更新中に ng-repeat の $watching を一時停止します
いくつかのマーカーを表示する MapBox マップと、各マーカーの情報を表示するパネルを含むページがあります。markers
そのために、 controller が所有するという配列にマーカーを追加しctrl
ます。
次に、私のhtmlパネルには、次のようなものがあります
動作しますが、でマーカーを設定すると、追加されたマーカーごとmap.setGeoJSON(x)
にイベントが発生します。on('layeradd')
それぞれが自動的に$scope.$digest
. 配列の監視を一時停止しmarkers
、すべてのマーカーを追加してから再開する方法はありますか?
このソリューションを(codewallから)試しましたが、機能しません
[更新 1]
@YOU が示唆したように、temp_array を使用して変更を加えようとしました。というわけで、今ng-repeat
は を監視していますctrl.markers
が、 にアイテムを追加したり削除したりしていctrl.temp_markers
ます。更新が完了したら、ctrl.markers=ctrl.temp_markers.slice(0)
. このようにしても、配列内のすべての項目にダイジェスト サイクルが適用されていることがわかります:(