問題タブ [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.
angularjs - ブロードキャストして、期待どおりに動作しない
1つのコントローラーからブロードキャストを試み、別のコントローラーでその変数を監視し、2番目のコントローラーでいくつかの変更を期待しています。しかし、うまくいきません。
以下は最初のコントローラーコードです
以下は、/kb ページである 2 番目のコントローラー コードです。
これを有効にするために明示的に行う必要があることはありますか。
javascript - $scope の受け渡しには遅延があります
複数の目的で Angular ポップアップ システムを構築しています。それが機能する方法は、以下に示すように、3 つの変数が ( 、および)bitPopup
に渡されるというディレクティブがあることです。type
action
data
index.html
popup.js
ポップアップ コントローラは、タイプに基づいて異なるディレクティブをロードします。
popup.html (上記の HTML テンプレート)
false_positives.js (bitFalsePositivePopup
ディレクティブを含む)
bitFalsePositivePopup
次に、ディレクティブの html テンプレートにからのいくつかのプロパティが表示されますdata
。
ポップアップをトリガーする方法は次のようになります。
- ディレクティブを含むディレクティブ内のテンプレートから、とを変更し
bitPopup
ます。$scope.popup
type
action
data
- やります
$scope.$broadcast('showPopup');
bitPopup
ディレクティブが反応し、$scope.$on('showPopup', [...]});
ポップアップが表示されます。
ここで、この非常に奇妙なことが最初の試行で機能する場合に発生します (ポップアップが正しいdata
情報で開きます) data
。
さらに奇妙なのは、最初の試行で情報をログに記録しようとしたことです。わかったことは次のとおりです。
$scope.popup
呼び出しの直前にindex.htmlに$scope.$broadcast('showPopup');
正しい情報が表示されます。$scope.data
bitPopup
ディレクティブディスプレイでnull
$scope.data
atbitFalsePositivePopup
ディレクティブは正しい情報を表示します。
2回目の試行で:
$scope.popup
at index.htmlは再び正しいです。$scope.data
bitPopup
ディレクティブで、前回の試行からの情報を表示しますbitFalsePositivePopup
同じことがディレクティブにも当てはまります。
もう1つの奇妙なことは、それを使用する$scope.$apply()
と正しく機能するだけで、$apply already in progress
エラーが表示されることです。$scope.$apply()
これはすべて Angular イベントであるため、この場合は使用しないでください。しかし、渡されたスコープが常に一歩遅れている可能性はありますか?
そもそも私は何か間違ったことをしていますか?
編集:
amahfouz の回答により、明確化のためにさらにコードを投稿することにしました。より明確に読むために、重要でない詳細をいくつか省略しました。
index.html
index.js
popup.html
popup.js
false_positives.js
javascript - AngularJS で $broadcast と Service を使用してディレクティブにデータを渡します
Angular ベースのフロントエンドに移行中です。とを使用することが良い解決策になる可能性があることがJavaScript
いくつかの研究でわかった後、いくつかのデータをディレクティブに渡す機能があります。しかし、私にはうまくいきません...Service
$broadcast
ここに私のコードがあります:
データをサービスに渡すためのコード:
質問1:何がng
入っていますか.injector(['ng' ,'app'])
質問 2: 現時点ではコンソールのみが表示されます-- $broadcast
。ディレクティブでイベントをキャッチできない私のコードの問題は何ですか
angularjs - ディレクティブで.onをテストすると、spy got functionが期待されます
.on を介してディレクティブで $broadcast (コントローラーから) からレシーバーをテストしようとしています。
指令:
上記で、エラーが発生します:
angularjs - 2か所で同じ放送を設定する方法
他のコードの実行後に呼び出す必要があるコードがあります。私はbroadcast
これに使用しています。2 つの異なる場所から同じコードを呼び出す必要があります。今ではうまくいきません。私のコードは
ブロードキャスト 1
の上
他の場所からもこのコードを呼び出す必要があります
だから私scope.$broadcast('selOrdLine', ordline);
もそこに入れました。しかし、それはエラーを返しています。
編集
2回目はループを使ってデータをbroadcast
作っています。だから私はデータがこのように準備ができた後にのみブロードキャストを実行するために使用していますordline
angular.forEach
$q
エラーは、broadcast
が複数回呼び出されることです。しかし、私が使用$q
しているように、注文データが設定された後にのみ実行する必要がありますよね?