2012-09-30 10 views
8

イベントを通じてオブジェクトをブロードキャストする方法はありますか?どのようにAngularjsでオブジェクトをブロードキャストできますか?

app.run ($rootScope) -> 
    message = {type: 'channel', action: 'create', data: { name: "ssss", id: 0}} 
    $rootScope.$broadcast('message', message) 

angular.module('WebChat').controller 'ChannelController', ($scope) -> 
    $scope.$on 'message', (message) -> 
     console.log message 
     console.log 'hi' 

をしかし、私は、私が働いてそれを得た何も出力

編集 を取得していない午前:

現在、私はしようとしています。コールバック関数の最初のパラメータはスコープです。コントローラは、メッセージを受け入れる準備ができている前に、あなたが放送されているので、あなたは、あなたの場合には、出力を取得されていない

angular.module('WebChat').controller 'ChannelController', ($scope) -> 
    $scope.$on 'message', (scope, message) -> 
     console.log message 
     console.log 'hi' 

答えて

7

:私はにコントローラを変更しなければなりませんでした。モジュールのrunメソッドは、アプリケーションのライフサイクルの早い段階で、コントローラのスコープがメッセージを待機する準備が整うまで実行されます。ここで

は、リスナーの準備が整う前に放送が起こる見てコンソールをチェックし、これを示しjsFiddleです:http://jsfiddle.net/vPq2P/3/

+1

私は私がする必要がある似たような状況、[負荷のYouTubeのIFrame API](httpsを持っている:/を/developers.google.com/youtube/iframe_api_reference#Getting_Started)。私はrun()の中にロードコードを置いてみましたが、最後にロードしようとしていましたが、どこにいても、コントローラがリッスンできるようになる前にブロードキャストが発生します。 (1500が最もうまくいくようです)。タイムアウトを使わずに適切なオーダーのリスン - >ブロードキャストを保証する方法はありますか?私は私の質問が曖昧に見えるかもしれないことは知っていますが、必要であれば詳細を提供することができます。ありがとう。 – braincomb

関連する問題