問題タブ [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.
angular-broadcast - ng2-cabelを使用したangularjs 4で放送局のアクションが2回呼び出される問題
私はチャットにng2-cableを使用しており、サーバーからのアクションをレールでブロードキャストしています
AngularJs
--> app.component.ts 内
import { Ng2Cable, Broadcaster } from ' ng2-cable ';
--> 接続にはこれを使用
プライベート ng2cable: Ng2Cable,
this.ng2cable.subscribe(environment.apiEndpoint+"/cable", 'ChatChannel',{room: this.currentUser.id});
--> サーバーからの通知を読む
import {ブロードキャスター} from 'ng2-cable';
民間放送局: Broadcaster,
this.broadcaster.on('ExpertQuestionList').subscribe(message => { console.log("これは、一度ロードした後にこのページに戻ってきたときに複数回呼び出されます") } );
ここで、ExpertQuestionList は 1 つのアクション名です。アクションケーブルを使用してレールサーバーからブロードキャストします。
-------------------------------------------------- -------------------------------------------------- --------------------
ExpertQuestionList はサーバーから 1 回ブロードキャストされます。レール ログで確認できますが、console.log で 2 回呼び出されます。2回とは、このページに来る回数と同じように複数回繰り返すことを意味します。何度も再初期化するのはとても簡単です。リセットまたは破棄アクションのようなものが欲しい (this.broadcaster.on('ExpertQuestionList'))
javascript - $broadcast は限定された文字が使用された場合にのみ発火します
Angular の を使用しようとして$broadcast
、テストして文字列 'hi' を使用し、兄弟コントローラーでそれを監視すると、次のように正常に動作します。
文字列を などの別のものに変更するとすぐに、2 番目のコントローラーでメソッドphaseChange
を呼び出すことができません。$on
理由がわからない。メソッドをラップしようとし$broadcast
ました$timeout
が、問題は解決しませんでした。
質問
間違った方法で使用$broadcast
していますか、それとも構文が間違っていますか?