2017-03-19 17 views
0

誰かが私はもはや見つけることができるリソースに関するスレッド上で、次のコードに非常によく似たものを投稿しない:放送ログアウト

$scope.logout = function(){ 
    var outRes = $resource("/admin/logout"); 
    outRes.save({}, 
    function() { 
     $scope.userObject.lastActivity_type = "Log out"; 
     $rootScope.isLoggedIn = false; 
     $location.path("/login-register"); 
    }, 
    function errorHandling(err) { 
     console.log("Not cool, error"); 
    }); 
} 

をそれは私の割り当てに私のための超便利だったとごく最近のように見えたので、私は期待していました誰かがブロードキャスト方法でこれを書き直して、他のユーザー/アーキテクチャのあらゆる部分がユーザーがログアウトしたことを知らせる方法を説明することができますか?割り当てが終わったばかりなので、私はちょうど不思議です。

+0

これはAngular.jsのですか?それのように見えるが、あなたはそれを言及していない。 –

+0

なぜブロードキャスト?ログアウトすると、別の州/ルートに移行する必要があります – svarog

答えて

0

これはAngular 1のため、イベントをブロードキャストすると、ブロードキャストされているスコープのすべての子スコープで可視になります。あなたはそれがすべてのスコープに見えるようにしたい場合は、この例のように、ルートスコープでそれを放送する必要があります:あなたは、いくつかのより多くの情報が必要な場合

$rootScope.broadcast('my-event'); 

ドキュメントがhereです。

編集:他のユーザーにブロードキャストすることについても尋ねました。それは非常に異なる魚のケトルです!

Angularは純粋にフロントエンドフレームワークなので、別のクライアントにメッセージをブロードキャストすることはできません。あなたがリアルタイムで他のユーザが行った変更の通知を受け取るチャットや通知システムのようなものを望むなら、おそらくSocket.ioのようなライブラリ経由でWebソケットを使いたいと思うでしょう。 WebsocketまたはAJAXリクエストを介してサーバーに何らかの通知を送信し、サーバー上でそれを受け取るべき接続されたクライアントにメッセージをブロードキャストするトリガーとなるでしょう。上記の方法を使用して、角度コードのルートスコープ内の対応するイベントをトリガすることができます。 Socket.ioでこれを行うためのチュートリアルがたくさんあるので、これについては詳細には触れません。