問題タブ [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 投票する
1 に答える
323 参照

javascript - リスナーを2回実行させるAngularブロードキャストイベント

イベントをブロードキャストするサービスにメソッドがあり、1 つのコントローラーがそれをサブスクライブしています。

ブロードキャストが発生すると、サブスクライバ ハンドラが 2 回実行されます。以下はセットアップです:

原因を修正することはできません。違いを生むことができる何かが他にありますか。ありがとう。

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

angularjs - Angular - ブロードキャスト、ディレクティブで $on が複数回呼び出される

私は角度のある単一ページアプリに取り組んでおり、基本的に親子関係を持たない2つの異なるディレクティブ間で通信する必要があります。

ディレクティブ A には、異なる関数から同じイベントをブロードキャストする必要がある場所が 2 つあります。ディレクティブ B では、そのための $on リスナーを作成しました。

ここで、callFirstFunc とそのブロードキャストが初めて呼び出されるたびに、リスナーが 1 回呼び出されることを確認します。その後の呼び出しで、リスナーは 2 回、3 回と呼び出され、増加し続けます。

callFirstFunc が実行されたときに callSecondFunc が呼び出されるため、これに対するリスナーも何度も呼び出されます。callFirstFunc でのブロードキャストのリスナーの回数。では、リスナーが 1 回だけではなく、複数回呼び出されるのはなぜでしょうか。毎回ループして増えています。

ディレクティブ A:

ディレクティブ B:

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

angularjs - 親子関係のないAngularの他のコントローラーにイベントをブロードキャストおよび発行する方法

この投稿からヒントを得ようとしています - $scope.$emit と $scope.$on を使用し ていますが、コントローラーが互いに関連していない場合は何も機能しないようです。

あれは -

CtrlB では、次のようにします。

CtrlA では、次のように聞きます。

いいえ-CtrlA div内にCtrlB divをネストしない限り、CtrlAはブロードキャストされたイベントを受信しません

何か案が?

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

angularjs - angularjs のサービスからコントローラー関数を呼び出す

アプリでチャットを有効にするために socket.io を使用しており、サービスSocketServiceを使用してすべてのソケット処理を実行しています。メッセージが届いたら、サービスからコントローラーの機能をトリガーしてSocketService、UI にいくつかの変更を加えたいと思います。サービスからコントローラーの機能にアクセスするにはどうすればよいか知りたいです。サンプルコード:

サービスのサンプルコードです。

コントローラのコード

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

angularjs - angularjs $broadcastがビューに値を反映していません

$rootScope に $broadcast を追加し、それを他のコントローラーにキャッチすると、表示する値が反映されません。例:

MyFunc関数を使用するfirstCtrlと、ユーザーのページにリダイレクトされ、関数の実行もブロードキャストされます。ユーザーページで$scope.callOnBroadcast()は、ブロードキャストがオンになっているときに使用しますが、使用してもビューページに変更が反映されています$scope.$apply()。どこが間違っていますか?

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

javascript - カスタム Angular ディレクティブはイベントをブロードキャストしますが、ネストされた子にはブロードキャストしませんか?

ネストできるアコーディオン ディレクティブを Angular で作成したので、アコーディオンはその中に子アコーディオンを持つことができます。

アコーディオンが開閉するときにイベントをブロードキャストして、他のディレクティブがそれをリッスンできるようにしたい (たとえば、アコーディオン パネル内のメニューは、その中のアコーディオンが開いているときに表示される可能性がある)。

問題は、外側のアコーディオンの内側にネストされた内側のアコーディオンがある場合、内側のアコーディオンが開閉イベントをブロードキャストしていないため、イベントを内側のアコーディオンの子要素にブロードキャストしたくないということです。

それが意味をなさない場合に備えて、別の言い方をすれば、ネストされたアコーディオン内の要素は、DOM ツリーの上位にあるアコーディオンではなく、そのアコーディオンによってブロードキャストされるオープン/クローズ イベントをリッスンできる必要があります。

うまくいけば、これに対する簡単な解決策があります。

更新:ここにデモを追加: http://jsfiddle.net/jonhobbs/xr1kLqba/

デモ イベントが現在まったく機能していないため、明らかに $broadcast と $on を正しく理解していませんが、私が何をしようとしているのかは明らかなはずです!

編集:どうやら jsfiddle へのすべてのリンクにはコードを添付する必要があるようです。