問題タブ [angular-broadcast]

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

angularjs - ブロードキャストして、期待どおりに動作しない

1つのコントローラーからブロードキャストを試み、別のコントローラーでその変数を監視し、2番目のコントローラーでいくつかの変更を期待しています。しかし、うまくいきません。

以下は最初のコントローラーコードです

以下は、/kb ページである 2 番目のコントローラー コードです。

これを有効にするために明示的に行う必要があることはありますか。

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

javascript - $scope の受け渡しには遅延があります

複数の目的で Angular ポップアップ システムを構築しています。それが機能する方法は、以下に示すように、3 つの変数が ( 、および)bitPopupに渡されるというディレクティブがあることです。typeactiondata

index.html

popup.js

ポップアップ コントローラは、タイプに基づいて異なるディレクティブをロードします。

popup.html (上記の HTML テンプレート)

false_positives.js (bitFalsePositivePopupディレクティブを含む)

bitFalsePositivePopup次に、ディレクティブの html テンプレートにからのいくつかのプロパティが表示されますdata

ポップアップをトリガーする方法は次のようになります。

  1. ディレクティブを含むディレクティブ内のテンプレートから、とを変更しbitPopupます。$scope.popuptypeactiondata
  2. やります$scope.$broadcast('showPopup');
  3. bitPopupディレクティブが反応し、$scope.$on('showPopup', [...]});ポップアップが表示されます。

ここで、この非常に奇妙なことが最初の試行で機能する場合に発生します (ポップアップが正しいdata情報で開きます) data

さらに奇妙なのは、最初の試行で情報をログに記録しようとしたことです。わかったことは次のとおりです。

  • $scope.popup呼び出しの直前にindex.html$scope.$broadcast('showPopup');正しい情報が表示されます。
  • $scope.databitPopupディレクティブディスプレイでnull
  • $scope.dataatbitFalsePositivePopupディレクティブは正しい情報を表示します。

2回目の試行で:

  • $scope.popupat index.htmlは再び正しいです。
  • $scope.databitPopupディレクティブで、前回の試行からの情報を表示します
  • bitFalsePositivePopup同じことがディレクティブにも当てはまります。

もう1つの奇妙なことは、それを使用する$scope.$apply()と正しく機能するだけで、$apply already in progressエラーが表示されることです。$scope.$apply()これはすべて Angular イベントであるため、この場合は使用しないでください。しかし、渡されたスコープが常に一歩遅れている可能性はありますか?

そもそも私は何か間違ったことをしていますか?

編集:

amahfouz の回答により、明確化のためにさらにコードを投稿することにしました。より明確に読むために、重要でない詳細をいくつか省略しました。

index.html

index.js

popup.html

popup.js

false_positives.js

0 投票する
3 に答える
800 参照

javascript - AngularJS で $broadcast と Service を使用してディレクティブにデータを渡します

Angular ベースのフロントエンドに移行中です。とを使用することが良い解決策になる可能性があることがJavaScriptいくつかの研究でわかった後、いくつかのデータをディレクティブに渡す機能があります。しかし、私にはうまくいきません...Service$broadcast

ここに私のコードがあります:

データをサービスに渡すためのコード:

質問1:何がng入っていますか.injector(['ng' ,'app'])

質問 2: 現時点ではコンソールのみが表示されます-- $broadcast。ディレクティブでイベントをキャッチできない私のコードの問題は何ですか

jsfiddle

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

angularjs - ディレクティブで.onをテストすると、spy got functionが期待されます

.on を介してディレクティブで $broadcast (コントローラーから) からレシーバーをテストしようとしています。

指令:

上記で、エラーが発生します:

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

angularjs - 2か所で同じ放送を設定する方法

他のコードの実行後に呼び出す必要があるコードがあります。私はbroadcastこれに使用しています。2 つの異なる場所から同じコードを呼び出す必要があります。今ではうまくいきません。私のコードは

ブロードキャスト 1

の上

他の場所からもこのコードを呼び出す必要があります

だから私scope.$broadcast('selOrdLine', ordline);もそこに入れました。しかし、それはエラーを返しています。

編集

2回目はループを使ってデータをbroadcast作っています。だから私はデータがこのように準備ができた後にのみブロードキャストを実行するために使用していますordlineangular.forEach$q

エラーは、broadcastが複数回呼び出されることです。しかし、私が使用$qしているように、注文データが設定された後にのみ実行する必要がありますよね?