使用" mediator"作为listen-block例程中的接收器

时间:2015-02-05 21:01:12

标签: javascript chaplinjs

我有一个由其他人建立的ChaplinJS项目,而且我还没有完全了解该框架的某些细节。这有点让我觉得很难解决:

listen: {
  'change model': 'render',
  'home:actionvideo mediator': 'show'
},

此代码块位于其中一个视图JS文件中。我熟悉这种事件处理方式,我的理解是第一位(“home:actionvideo”)是一个事件的名称,第二部分(“mediator”)是一个元素选择器,后面的位冒号是响应事件而运行的函数的名称。

但在卓别林世界,我认为“调解员”实际上指的是卓别林核心Chaplin.mediator对象。这是对的吗?

虽然我在这,但第一行({1}}是否会以某种方式听取change model?哪个Chaplin.model

1 个答案:

答案 0 :(得分:1)

是的,这是正确的。

能够听取以下方法:

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班级到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