我创建了一个Spine控制器,我想从其中一个方法中触发一个自定义事件'Create'。 然后我想要另一个Spine Controller来监听那个事件。 如何使用Spine.js的自定义事件方法?
答案 0 :(得分: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”)
这样的东西原因是模型使用@extend Event
,它将方法添加到类,但Controller使用@include Event
,它将方法添加到实例。 Model实现了具有实例绑定的外观,因为它定义了自己的trigger,bind和unbind
答案 1 :(得分:1)
您可以像这样在Spine中触发事件
Spine.trigger "Create"
在你的其他控制器中,你可以将事件绑定到这样的方法
Spine.bind "Create", @create
您必须在此Controller中定义名为create的方法:
create: =>
# Create action
因为自定义事件是全局的,所以建议使用控制器名称作为前缀。 您可以使用ControllerName:Create,例如:
Spine.trigger "ControllerName:Create"