如 Chaplin.js 文档中所述,“如果您想为类提供本地 pub/sub 功能,请查看EventBroker。”
将发布/订阅添加到类:
在您的User
课程中,您可以使用 Underscore 混合添加 pub/sub 功能_.extend
:
module.exports = class User
_.extend @prototype, Chaplin.EventBroker
constructor: (options) ->
@subscribeEvent 'login', @test
# ...
在路由之间持久化数据:
现在,跨路由持久化数据是另一回事,您可以根据需要以多种方式处理该问题。例如,您可能知道可以使用Chaplin.ComposerChaplin.View
持久化 a及其相关数据
此外,您还有很多有用的工具来跟踪处置过程。例如,您有beforeControllerDispose
在处置当前控制器之前发出的事件。
您可以订阅此事件,以借助静态类在路由之间保留一些所需的数据。例如,为您的控制器订阅beforeControllerDispose
事件:
# in Controller..
@subscribeEvent 'beforeControllerDispose', @beforeDispose
# ...
beforeDispose: ->
MyStaticClass.user = @user
# ... you can do some extra cleanup here.
# useful for unbinding stuff that you know it will not be garbage collected/disposed
然后,使用Chaplin.Controller.beforeAction
方法确保您的对象从一开始就可用。beforeAction
,顾名思义,在调用实际路线/端点的动作 ( index
, show
..) 之前由卓别林自动调用,因此您可以使用它来预先分配一些数据:
# in Controller..
beforeAction: ->
@user = MyStaticClass.user
# ...
index: ->
# @user is available here