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

javascript - Angularjs $broadcast 1 回、$on 2 回

$broadcast を rootScope から 1 回送信しますが、リスナー ($on) は 2 回呼び出されます。

リスナーはコントローラー内にあり、$rootScope.$on代わりに を使用し$scope.$onます。誰かがこの問題を抱えていましたか?

編集

ルートスコープ:

他のコントローラー:

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

javascript - 別のコントローラーからの関数のブロードキャストは機能しませんが、本番環境でのみ機能します

これはおそらく、AngularJS でこれまでに経験した中で最も奇妙な問題です。私たちのウェブサイトは、さまざまなルートで構成されています。各ルートにはビューとコントローラーがあり、MainCtrl という親コントローラーもあります。私の index.html では、私が持っているすべてのコントローラーをインポートします。ある時点で、別の子ルートに再ルーティングし (コントローラーとして IframeCtrl を使用して /iframe と呼びましょう)、次に、イベント名を MainCtrl からすべての子に下向きにディスパッチしようとすると (ブロードキャストされた関数は IframeCtrl にあります)、何も起こりません(ローカルでは問題ありません。問題は本番環境のみです)。ルートを変更した後、 IframeCtrl からの関数がまだロードされていないことが問題かどうかはわかりませんが、 index.html にロードするので、これで十分だと思いました。ローカル。

これは MainCtrl のコードです。

これは、アプリ内の私の工場からのコードです。

そして、これは IframeCtrl のコードです

どのようにそれを行うかについてのアイデアはありますか?

ありがとう、ミラ

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

javascript - 子リスナーが AngularJS にロードされた後に親イベントをブロードキャストする

親と子1と子2の3つのコントローラーがあります。Child1 と Child2 は、親コントローラー内のタブです。

親コントローラーはサービスを呼び出してデータを取得し、イベントをブロードキャストします。子はそのイベントをリッスンし、データを取得して必要なことを実行します。

ただし、親イベントがブロードキャストされると、子リスナーが登録されないことがあります (そのため、子のリスナーは機能しません)。イベントブロードキャストを遅らせるために同じタイムアウト機能を使用しましたが、インターネット接続が遅いと失敗します。子リスナーが登録された後、ブロードキャストリッスンが常に開始されるようにする方法はありますか? 以下は今のところ次のコードです

私は angularJS を初めて使用し、オンラインで適切な解決策を見つけられません。ガイドしてください。前もって感謝します :)

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

javascript - angularブロードキャストが2番目の呼び出しで更新されない

サービスを呼び出すコントローラーがあります。サービス内で、ページの読み込み時に完全に機能する $rootScope.$broadcast を実行します。ただし、サービスを再度呼び出すと、 $rootScope.$broadcast が呼び出されないようです。

コントローラ:

サービス:

指令:

HTML:

ページはコントローラーindex.htmlをロードします。MyController

ページの読み込み時に、$broadcast呼び出された fromthis.inititateが正常に呼び出さ{{myValue}}れ、1 として表示されます。

ただし、ボタンをクリックするとng-click="Next()"、サービスが再度呼び出されますが、{{myValue}}1 + 1 = 2 ではなく 1 として表示されます。

何かご意見は?

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

javascript - $broadcast は非同期で動作します。同期する必要があります

ディレクティブの内容を更新する多数の $rootScope.$broadcast を持つコントローラーがあります。

最初の $rootScope.$broadcast はすべてのコンテンツ/データをクリアし、もう一方はデータを取り込みます。

注: ヘッダーは $stateProvider から解決されます。例:

指令:

私が抱えている問題は、ページの読み込み時に、クリアが完了する前にタイトルと合計の $broadcast が呼び出されているように見えることです。


アップデート:

プランカー: http://plnkr.co/edit/o7wEFyIGh0284ZAc9VnS?p=preview

home.html では常に、ディレクティブは非表示になります - 正しいです。cart.html ではいつでも、ディレクティブが表示されます - 正しいです。

問題を確認するには、カートをクリックしてください... ボタンをクリックしてカウンターを増やします..ホームに戻り、カートに戻ります.カウンターは 0 にリセットされません

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

angularjs - $scope.$broadcast でイベントを追跡するには?

angular-timer を使用していますが、そのイベントを追跡する方法が少し混乱しています。たとえば、時間切れになってから何かをしたいのですが、コンソール ログにイベントが表示されません。

コンソールは空です。

https://github.com/siddii/angular-timer/blob/master/examples/angularjs-add-countdown-seconds.html

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

c# - 親コントローラーは、ページの更新時に子コントローラーの $broadcast イベントをトリガーしません

親コントローラーでは、タイマー値を秒単位で取得し、コントローラーが「ParentController」であるインデックスページに表示しています。

ui-view ディレクティブを使用して 1 つの部分ビューを追加しました。部分ビューのコントローラーは「子コントローラー」です。私たちの場合、親コントローラーの $broadcast リクエストは、タイマー値の子コントローラーを送信します。

最初の試みではうまくいきます。ただし、ページを更新すると、タイマー値が子コントローラーにブロードキャストされません。