問題タブ [angularjs-apply]

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 に答える
1142 参照

angularjs - angularjs の特定のディレクティブを更新する

ツリー構造に変更が加えられたときに、ツリー メニューのブランチが適切に更新されるように、考えられるあらゆる組み合わせを試してみました。基本的に、私が持っているのは、ツリーの分岐を表示するための再帰的なネストされたディレクティブのセットです。ツリー構造の任意の部分のディレクティブ データを格納する JavaScript クラスを作成しました。このクラスは、私が本質的にインターフェースしたモデルを保持しているため、いくつかの既知のメソッドがあります (たとえば、ajax からデータをロードする getVals() や、ツリーを構築するための共通プロパティを取得する getId()、getName()、getLabel() など)。 . 次に、これを 2 つの方法で使用して、このオブジェクトのペアでツリーを構築します。1 つ目は、特定の分岐点に対して、「グループ」を記述する単一のモデル (複数のサブブランチを持つ) を保持します。(基本的にDoctrineエンティティスタイルオブジェクトの配列であるDoctrine ORMコレクションからロードされたデータ)、もう1つは実際の分岐であるエンティティを表す単一のモデルです。トランク (分岐点) には 2 つのオプションがあります。1 つはそのグループ/親の詳細を表示するオプションで、もう 1 つは子の名前だけを表示するオプションです。次に、各子には、その詳細を表示するか、それが子であるかなどを表示するオプションがあります。

特定の分岐点 (エンティティ) のプロパティを操作したり、分岐自体を追加/削除/移動したりする関数の追加を開始すると、問題が発生します。追加/更新/削除用に機能するフォームがあります (まだ移動中です) が、モデルが独自の ajax レスト コールを実行しているため、データが保存されると、ツリーは変更を反映して更新されません。問題の 1 つは、子の UL タグの後に追加ボタンを設定したことです。これは、UL タグを含むテンプレートと同じディレクティブにあるため、問題なく更新できます。しかし、子は、各サブブランチ ラッパーを表示するために LI の周りの ng-repeat に関連付けられている 2 番目のディレクティブの下にあります。したがって、更新/削除ボタンはそのテンプレートに表示されますが、更新する必要があるスコープは親です。$parent.$parent を実行できることは理解しています。reload() を使用してリフレッシュ スクリプトを呼び出しますが、「移動」機能を実行しようとすると、ツリーの途中でリスト項目を移動している可能性があります。テンプレートの分岐点に「更新」ボタンがあり、document.getElementById('branchpointX').click(); を実行しようとしました。しかし、それはぎこちなく、そのスコープの .reload() 関数内でスコープ内のそのポイントをリフレッシュする最良の方法を見つけようとしています。$scope.$apply は、既存の $digest 更新と衝突することがあり、$timeout でそれらをスローしても、更新が既に進行中であるというエラーがスローされることがあります。document.getElementById('branchpointX').click(); を実行してみました。しかし、それはぎこちなく、そのスコープの .reload() 関数内でスコープ内のそのポイントをリフレッシュする最良の方法を見つけようとしています。$scope.$apply は、既存の $digest 更新と衝突することがあり、$timeout でそれらをスローしても、更新が既に進行中であるというエラーがスローされることがあります。document.getElementById('branchpointX').click(); を実行してみました。しかし、それはぎこちなく、そのスコープの .reload() 関数内でスコープ内のそのポイントをリフレッシュする最良の方法を見つけようとしています。$scope.$apply は、既存の $digest 更新と衝突することがあり、$timeout でそれらをスローしても、更新が既に進行中であるというエラーがスローされることがあります。

だから、ディレクティブの階層ツリーで特定のディレクティブを更新する最良の方法は何だろうと思っていますか? 起点に戻る分岐点のタグを使用して各 subBranch にスタックを構築しようとしましたが、 treeStack['someParentId'].reload() を実行しようとすると、子スコープでは機能しないようです.

SW

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

angularjs - エラー: [$rootScope:inprog] $apply は既に進行中です

角度のあるアプリで使用しようとしたところ'ngTagsInput'、アプリのタグは正常に動作していますが、同時にコンソールにエラーがスローされます.UIフローには影響しませんが、コンソールにエラーが記録されています.なぜ原因と解決策このエラー。エラー:

これは、私のファイルがブラウザ用にダウンロードされる順序です

と私の見解

私のコントローラー

scope.watch/.eval/.applyを使用している自己定義ディレクティブがあります

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

angularjs - AngularJS - サーバーからのデータを待ち、リストに正しく追加します

私は現在、特定の月と年のプロジェクト情報をサーバーから取得してユーザーに表示する必要がある AngularJS プロジェクトに取り組んでいます。

まず最初に、可変のプロジェクト ID (projectList) のリストを取得します。次に、特定の年と月のプロジェクトに関する情報を取得する必要があります。このコードを使用して、データを取得し、最後のプロジェクトが成功したときにデータを更新しようとしています。データが取得されたら、ng-repeat を使用してユーザーに表示します。

これには2つの間違いがあります。

  1. 最後のインデックスにデータのみを追加します。
  2. 別の月または年のデータを要求しても、すぐにデータが更新されない

$q.allでソリューションを探しましたが、「projectService.getProject(..)」の可変量の関数と一緒に使用する方法がわかりません

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

angularjs - http サービスが返された後、スコープ変数がデータ オブジェクトを取得しない

サーバー上のファイルのリストを読み取ろうとしています。HTTP GET メソッド サービスはファイルのリストを返しますが、コントローラーのスコープ変数が戻り値で更新されません。何が問題なのかを見つけるのを手伝ってくれませんか?

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

angularjs - 非角度イベントに $scope.$apply を使用することは必須ですか?

コントロールが角度以外のイベントから戻ったときに、常に $scope.$apply を使用してスコープ変数を更新することをお勧めしますか?

角度のあるイベントと角度のないイベントの両方で同じメソッドが使用されるユース ケースがあり、コードの重複を避けたいと考えています。

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

angularjs - $digest を使用する代わりに $apply を使用する場所

誰かがインタビューをクラックするのに役立つ実際の例を提供していただければ幸いです.

0 投票する
4 に答える
303 参照

javascript - JS - angular がクリック イベントの処理に $(el).on('click', f)` ではなく、`ng-click="f()"` 属性を使用するのはなぜですか?

ng-click="f()"angularが ではなく、クリック イベントの処理に属性を使用するのはなぜ$(el).on('click', f)ですか?

htmlonclick属性を使用することは一般的に悪い習慣と見なされているため、これを尋ねているのに、なぜ Angular はこのアプローチを使用するのでしょうか?