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

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

javascript - $watch 非同期サービス変数が機能しない

こんにちは、非同期 http サービスの応答に応じてビューを作成するために、過去 2 日間を費やしました。しかし、それは私にはうまくいきません。誰でも私を助けることができますか?

ここに基本的なアイデアのコードがありますが、元のコードは少し異なります。

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

javascript - spyOn リスナー ウォッチ機能が動作しない

$scope.$watch のリスナー関数をスパイしようとすると、決してスパイオンを呼び出さないようなものです

http://jsfiddle.net/b8LoLwLb/1/

私のコントローラー

私のテスト

問題は、関数をスパイする代わりに、テストが関数を実行してコンソール ログを出力することです。

angular 1.4を使用しています

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

javascript - ng-click 値の変更 + $scope.watch バインドが正しく機能しない

デフォルトで「createdAt」に等しいスコープ変数「$scope.searchType」があります。私の HTML には、スコープ変数の値を変更するオプションがあります。

私のコントローラーには、変更をリッスンするための次のものがあります。

何らかの理由で $scope.$watch が呼び出されません。以前のように、これがどのように機能しないのかわかりません。これは「$scope.searchType」宣言です:

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

javascript - 値がディレクティブから更新されたときに $rootScope の Angularjs $watchCollection がトリガーされない

私が取り組んでいるいくつかの Angularjs 機能の問題を解決するために、少し問題が発生しています。

基本的な考え方は、ユーザーがアプリの次のセクションに進む前に、特定の基準を満たす必要があるシステムがあるということです。この 1 つの例は、ユーザーが先に進むために、コメントを追加し、リンク (実際のアプリでは、これはファイルのダウンロード) をクリックする必要があることです。

ここで完全な例を見ることができます: https://jsfiddle.net/d81xxweu/10/

HTML はかなり自明であると想定し、Angular モジュールで行っていることに移ります。私のアプリの宣言と初期化は次のとおりです。

これはとても簡単です。ディレクティブとコントローラーからアクセスできるようにするために、アプリケーションのルート スコープに criteria というオブジェクトをアタッチしています。基準が満たされると、ユーザーが先に進むことができるリンクをレンダリングするディレクティブがあります。この例では、リンクのテキストが「待機中...」から「クリックして続行」に変わり、先に進むことができることを示しています。

したがって、このディレクティブに設定したウォッチ ステートメントをトリガーするために、このコントローラーで許可されているコメントを追加できます。

前のものは、コメントを表示/追加するためのコントローラーです。ここでは、ユーザーがコメントを追加したことを示すために、criteria1 を true に設定します。これは実際には問題なく動作し、specialButton ディレクティブの $watchCollection は期待どおりに呼び出されます。

先に進むためにクリックする必要があるリンクから同じアクションを実行しようとすると、問題が発生します。これは、コメントリスト/フォームとは異なり、このような場合、コントローラーよりもディレクティブの方が意味があると理解しているため、ディレクティブでレンダリングされます。

ここでわかるように、コントローラーと同じように $rootScope を渡します。ただし、criteria2 を true に設定すると、$watchCollection はトリガーされません。

したがって、最初にコメントを追加してから他のボタンをクリックすると、2番目の変更がウォッチをトリガーしないため、specialButtonがテキストを更新するのが見られません。ただし、最初にリンクをクリックしてからコメントを追加すると、specialButton が期待どおりに更新されます。requiredLink をクリックすると、データが更新されますが、ウォッチはトリガーされません。そのため、コメントを追加して $watch がトリガーされると、両方が true に設定されていることがわかります。

この問題を解決するために提供できるヘルプを事前に感謝します。お時間をいただきありがとうございます。

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

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). このようにしても、配列内のすべての項目にダイジェスト サイクルが適用されていることがわかります:(

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

angularjs - イベントによるコントローラの拡張

私は現在、パーティー制作会社向けに単一ページの Web アプリケーションを作成しています。

私の目標は、ユーザーが新しい「パーティー ドキュメント」を開いて編集できるようにする「Office のような」アプリケーションを作成することです。

各ドキュメントには多くの「コンテンツ ページ」 (食品、ユーティリティ、アトラクション、サプライヤーなど) があり、各ページには多くのフィールドがあります。

各フィールドには、追加、削除、または編集時に発生する独自の制限があります。

他のすべてのフィールド オブジェクトが継承する基本 JavaScript オブジェクトを作成したかったのです。次のようになります。

`

`

私の質問は、Angular の $watch システムを使用して、「OnChange」などのイベントをどのように拡張する必要があるかということです。

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

javascript - AngularJS - $watch のトラブル

ユーザーがストア サイトの「High」グループのメンバーである場合、製品 SKU の「Red」および「Blue」ドロップダウン リスト オプションを削除しようとしています。私が思いついたコードは以下のとおりですが、部分的にしか機能しません。機能する唯一のものはウィンドウアラートです。ここで、ユーザーのグループを検索するロジックを削除すると機能しますが、ユーザーは最初にカラー ドロップダウンの値を設定する必要があります。

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

angularjs - ウォッチャーで「Infinite $digest Loop」エラーが表示されるのはなぜですか?

ウォッチャー関数で奇妙な問題が発生しています:

次のようにこのエラーが発生します。

これを回避する方法がわかりません。誰でも私を助けることができますか?