7

名前空間のすべてのイベントをリッスンする方法はありますか。したがって、次のようなイベントを聞くと:

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')
4

4 に答える 4

5

この回答で述べたように、ワイルドカードを使用してイベントをリッスンすることはできません。しかし、あなたが聞くことができるように、allこれはうまくいきます:

vent.on('all', function(evenName, options) {
  var type = evenName.split(/notification:/)[1];
  if (type) {
    console.log(type, options);
  }
});
于 2013-03-08T14:26:41.843 に答える
1

警告: カスタム イベントでのイベント名前空間のリッスンが機能しなくなる可能性があります。たとえば、これは機能しませ

  @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"

で「session:login_success」をトリガーすると@app、ネームスペースではなく、2 つの特定のイベントのみが発生します。

関連する github の問題: https://github.com/documentcloud/backbone/issues/2558

于 2013-05-23T16:58:05.240 に答える