[Javascript] 骨干事件与通配符


Answers

正如在这个答案中所提到的,不可能用通配符来听事件。 但是,正如你可以听到这all将工作:

vent.on('all', function(evenName, options) {
  var type = evenName.split(/notification:/)[1];
  if (type) {
    console.log(type, options);
  }
});
Question

有没有办法来听命名空间的所有事件。 所以当我听到这样的事件:

app.vent.on('notification(:id)', function(type){console.lof(type)})

它会听取所有这样的事件:

app.vent.trigger('notification:info')
app.vent.trigger('notification:error')
app.vent.trigger('notification:success')



警告:监听自定义事件上的事件名称空间可能无法工作。 例如,这不起作用:

  @listenTo @app, 'session', -> console.log ".listenTo `session` triggered"
  @listenTo @app, 'session:login_success', -> console.log ".listenTo `session:login_success` triggered"

  @app.on 'session', -> console.log ".on `session` triggered"
  @app.on 'session:login_success', -> console.log ".on `session:login_success` triggered"

如果我在@app上触发'session:login_success',只有两个特定的事件触发,而不是命名空间。

相关的github问题: https//github.com/documentcloud/backbone/issues/2558