我已经创建了一个 Spine 控制器,我想从它的一个方法中触发一个自定义事件“创建”。然后我想要另一个 Spine Controller 来监听那个事件。这怎么可能使用 Spine.js 的自定义事件方法?
问问题
839 次
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 回答