8

イベントを通じてオブジェクトをブロードキャストするにはどうすればよいですか?

現在私が試しているのは:

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'
4

1 に答える 1

7

コントローラがメッセージを受け入れる準備ができる前にブロードキャストしているため、この場合は出力が得られません。モジュールのrunメソッドは、コントローラーのスコープがメッセージをリッスンする準備ができる前に、アプリケーションのライフサイクルの非常に早い段階で実行されます。

これを示すjsFiddleは次のとおりです。コンソールをチェックして、リスナーの準備が整う前にブロードキャストが行われることを確認します。http: //jsfiddle.net/vPq2P/3/

于 2012-09-30T15:26:00.667 に答える