在侦听块例程中使用 "mediator" 作为接收器
Using "mediator" as a sink in a listen-block routine
我有一个由其他人构建的 ChaplinJS 项目,但我并不完全了解该框架的某些细节。这是我发现很难理解的一点:
listen: {
'change model': 'render',
'home:actionvideo mediator': 'show'
},
此代码块位于其中一个视图 JS 文件中。我熟悉这种事件处理风格,我的理解是第一部分("home:actionvideo")是事件的名称,第二部分("mediator")是一个元素选择器,而位冒号后是 运行 响应事件的函数名称。
但在卓别林世界中,我认为 "mediator" 实际上指的是卓别林核心 Chaplin.mediator
对象。这是正确的吗?
当我在写的时候,第一行 change model
是否以某种方式听 Chaplin.model
?哪个Chaplin.model
?
是的,这是正确的。
chaplinjs可以监听以下方法:
var MyView = Chaplin.View.extend({
events: {
// Listen to $ DOM events
'click button': 'methodName',
'change select#myid': 'methodName',
...
},
listen: {
// Listen to Chaplin events
'onAddedToDOM': 'methodName',
...
// Listen to model events
'change:foo model': 'methodName',
// Listen to collection events
'reset collection': 'methodName',
// Custom mediator events (or Chaplin events, like router:route etc.)
'pubSubEvent mediator': 'methodName',
// The value can also be a function.
'eventName': function() {alert('Hello!')}
},
使用mediator
class,通过受控渠道publish/ or subscribe to direct communication:
this.publishEvent('pubSubEvent', ['Joe', 'Schmoe']);
或在您的视野之外:
require('chaplin');
Chaplin.mediator.publishEvent('pubSubEvent', ['Joe', 'Schmoe']);
您可以在此处找到事件委托的源代码:https://github.com/chaplinjs/chaplin/blob/master/src/chaplin/views/view.coffee#L299-308
我有一个由其他人构建的 ChaplinJS 项目,但我并不完全了解该框架的某些细节。这是我发现很难理解的一点:
listen: {
'change model': 'render',
'home:actionvideo mediator': 'show'
},
此代码块位于其中一个视图 JS 文件中。我熟悉这种事件处理风格,我的理解是第一部分("home:actionvideo")是事件的名称,第二部分("mediator")是一个元素选择器,而位冒号后是 运行 响应事件的函数名称。
但在卓别林世界中,我认为 "mediator" 实际上指的是卓别林核心 Chaplin.mediator
对象。这是正确的吗?
当我在写的时候,第一行 change model
是否以某种方式听 Chaplin.model
?哪个Chaplin.model
?
是的,这是正确的。
chaplinjs可以监听以下方法:
var MyView = Chaplin.View.extend({
events: {
// Listen to $ DOM events
'click button': 'methodName',
'change select#myid': 'methodName',
...
},
listen: {
// Listen to Chaplin events
'onAddedToDOM': 'methodName',
...
// Listen to model events
'change:foo model': 'methodName',
// Listen to collection events
'reset collection': 'methodName',
// Custom mediator events (or Chaplin events, like router:route etc.)
'pubSubEvent mediator': 'methodName',
// The value can also be a function.
'eventName': function() {alert('Hello!')}
},
使用mediator
class,通过受控渠道publish/ or subscribe to direct communication:
this.publishEvent('pubSubEvent', ['Joe', 'Schmoe']);
或在您的视野之外:
require('chaplin');
Chaplin.mediator.publishEvent('pubSubEvent', ['Joe', 'Schmoe']);
您可以在此处找到事件委托的源代码:https://github.com/chaplinjs/chaplin/blob/master/src/chaplin/views/view.coffee#L299-308