問題タブ [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.
javascript - AngularJS アプリケーション内のコントローラーからサービス内の変数を監視する方法は?
私は、リクエストが実行されているときに(学習目的で)gifのロードを設定するアプリ機能を書いています。私は AngularJS 1.4.5 の「Controller as」構文と John Papa スタイル ガイドを使用しています。そこで、現在のリクエストの量をサービスに渡すインターセプターを作成しました。
これは、ロード中の画像を表示する必要があるかどうかを示すフラグisLoadgerEnabledを使用した私のloading.serviceです。
上記のコードは私にとってはうまくいきます。ビューには、インデックスコントローラーからのフラグをリッスンする、ロードイメージとng-show ディレクティブを含むdivがあります。
私の問題: vm.isLoaderEnabledはサービスで更新されず(実際には vm.isLoaderEnabled は常に false)、どこに問題があるのか わかりません。この機能のための効率的で洗練されたソリューションを、おそらく $scope なしで (可能であれば) 書きたいと思います。質問、リファクタリングのアドバイス、またはデータをバインドして表示するためのより良いアイデアをお待ちしています。
angularjs - $modal.open() アクションの結果、フォーム検証ディレクティブが更新されない
フォームの検証に使用する「show-errors」という角度ディレクティブがあります。これにより、検証が失敗したときに「has-error」CSS クラスが含まれている div に適用されます。これは、ユーザーが入力ボックスを離れたとき (ぼかし) や、ユーザーが [続行] ボタンをクリックしたとき (これは複数ステップのフォームです) など、ほとんどの場合にうまく機能します。「show-errors-check-validity」メッセージをブロードキャストすることにより、続行時にすべてのフォーム要素の検証をトリガーします。
ディレクティブは次のとおりです。
HTML での使用方法は次のとおりです。
これはすべて、promise の戻り値、具体的には $modal.open() で検証をトリガーしようとするまではうまく機能します。ユーザーはモーダルを開いて、フォームに入力されている以前に保存した住所を選択できます。彼らがこれを行うとき、検証をトリガーしたいと思います。ここでも、'show-errors-check-validity' メッセージを使用しています。これはディレクティブの関数にヒットしますが、angularjs フォームの $error 値はまだ更新されていません。$rootScope.$digest() を呼び出すと、ダイジェストが進行中であるというエラーが表示されます。angularjs $scope.shippingAddressForm.zip.$invalid が更新された後にディレクティブを起動するにはどうすればよいですか?
以下の selectAddress() 関数は、shippingAddressForm と「show-errors」ディレクティブを持つすべてのフォーム要素を含むセクションのコントローラにあります。
angularjs - コントローラーにAngularJsサービスが挿入されていません
基本的なサービスをコントローラーに挿入するなどの非常に単純なことに問題があり、ドキュメントやその他のSOの質問を読んでも、自分が犯している間違いが本当にわかりません。
これが私の簡略化されたコードです:
//コントローラー
//サービス
//私のHTML
過去数時間で多くのことを試しましたが、引き続き
「TypeError: 未定義のプロパティ 'place' を設定できません」
サービスはコントローラー内では利用できないようです。ルーティングと関係があるかどうかはわかりませんが、そうは思えません。
誰かが私を正しい方向に向けることができますか?
こちらがプランカー
angularjs - ng-click が再び機能するまでに時間がかかるのはなぜですか?
編集: ng-dbclick が機能しないか、ここで使用されます。
オリジナル:
ボタンがあります。一度クリックすると、期待どおりに動作します。もう一度クリックしても動かない。1分ほど待つと、うまくいきます。ボタンに関連付けられた私の関数には多くのリターンがあり、他の関数を呼び出す if ループがありますが、毎回完全に機能します。ここでは、ダブルクリック機能を実装しました (したがって、カウンターは 1 と 2 であり、機能します)。プロジェクトはダブルクリックすると完了としてマークされます。
ここでのダイジェストまたは評価サイクルをおそらく理解していないか、 $scope.apply() を使用する必要があるかもしれません...基本的に、これらの概念またはそれらをどこで使用するかをまったく理解していません。ネストされた関数に $http get および post リクエストがあります。
HTML ファイルのコード:
コントローラ ファイルのコード:
angularjs - urlRouteProvider.otherwiseが設定されている場合のAngular ui-router無限ループ
このコードの無限ループが発生しています。
私もこのセットを持っています:
ユーザーがサイトに入り、認証が必要なときに、無限のダイジェスト ループが発生します。こんなふうになります:
- ユーザーは次のアドレスを入力します: http://localhost
- デフォルト ルート (それ以外の場合) が起動し、ユーザーをhttp://localhost/#/mainにリダイレクトします。
- $ OnStateChangeStartが ( app.main に対して) 発生し、ユーザーがログインしているかどうかをテストします。ログインしていない場合は、デフォルトのイベント終了が「app.login」にリダイレクトされるのを防ぎます。
- $ OnstateChangeStartが ( app.login に対して) 起動し、 toState.name が app.login' であるかどうかをテストします。そうであれば、リダイレクトする必要はないので戻ります。
- 理由はわかりませんが、 $ OnStateChangeStartが再び起動しますが、 app.mainが対象です。それは何度も何度も落ちます。
助けてください。