编程语言
首页 > 编程语言> > javascript-将事件从服务传递到Angular中的控制器

javascript-将事件从服务传递到Angular中的控制器

作者:互联网

我的服务中有一个音频元素,它具有“结束”事件侦听器.我正在尝试将该消息传达给角度控制器.

目前,我正在为我服务:

Audio.addEventListener "ended", (->
      $rootScope.$broadcast("audioEnded")
    ), false

在我的控制器中,我有:

$scope.$on "audioEnded", ->
      console.log("ended scope")

这可行,但是我想知道是否有更好的方法可以在不使用$rootScope的情况下从服务到控制器进行通信

解决方法:

实现所需目标的常用方法是将事件聚合器实现为服务.您可以通过简单的依赖注入在任何指令,控制器或配置函数中使用它.

app.service 'vent', ->
    handlers: []
    on: (eventName, handler) ->
       #register handler
    emit: (eventName, args...) ->
       #iterate events and call registered handlers

使用示例:

app.controller 'Ctrl', (vent) ->
    vent.on 'eventname', ->
        #...
    vent.emit 'eventname'

标签:angularjs,angularjs-scope,coffeescript,javascript
来源: https://codeday.me/bug/20191123/2064009.html