2

我已经创建了一个 Spine 控制器,我想从它的一个方法中触发一个自定义事件“创建”。然后我想要另一个 Spine Controller 来监听那个事件。这怎么可能使用 Spine.js 的自定义事件方法?

4

2 回答 2

3

自定义事件不必是全局的。您可以按控制器实例触发/绑定事件,但不能按控制器类。例如

class PresenterController extends Spine.Controller
  giveSpeech: (message) ->
    @trigger("speech",message)

class App extends Spine.Controller
  addKeynote: ->
    @speaker = new PresenterController
    @speaker.bind("speech",@listen)
  listen: (message) =>
    alert("I heard " + message)

但是你不能得到像 PresenterController.bind("speech") 这样的东西

原因是 Model 使用@extend Event了,它为添加了方法,而 Controller 使用了,它为实例@include Event添加了方法。Model 实现了具有实例绑定的外观,因为它定义了自己的 trigger、bind 和 unbind 实现

于 2012-06-03T02:52:46.567 回答
1

您可以像这样在 Spine 中触发事件

Spine.trigger "Create"

在您是其他控制器中,您可以将事件绑定到这样的方法

Spine.bind "Create", @create

您必须在此控制器中定义一个名称为 create 的方法:

create: =>
  # Create action

因为自定义事件是全局的,所以我建议使用控制器名称作为前缀。您可以使用 ControllerName:Create 例如:

Spine.trigger "ControllerName:Create"
于 2012-05-08T10:36:52.233 回答