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 回答