如何通过事件播放对象?

目前我正在尝试:

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

有帮助吗?

解决方案

在您的情况下,您没有输出,因为您在控制器准备好接受消息之前广播。在控制器的范围准备收听消息之前,模块的运行方法在应用程序的生命周期中非常早期执行。

以下是jsfiddle,说明了这一点,检查控制台以查看侦听器准备好之前的广播: http:// jsfiddle。网/ vpq2p / 3 /

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top