骨干在一个事件中触发两种方法

我正在使用Backbone,我有一个定义事件的视图:

    ....
    events: {
        'click .search-button': 'setModelTerm',
        'change .source-select': 'setModelSourceId',
        'change .source-select': 'activateSource'
    },
    ....

当事件发生change .source-select时,我想触发两种方法change .source-select触发。 问题是事件对象中的最后一个条目覆盖了前面的条目。
如何在一个事件中触发两种方法?
(我试图阻止编写另一种调用这两种方法的方法)


你可以在事件散列中传递一个包装函数来调用你的两个方法。

从http://backbonejs.org/#View-delegateEvents

事件的格式为{"event selector": "callback"} 。 回调可以是视图上方法的名称,也可以是直接函数体。

尝试

events: {
    'click .search-button': 'setModelTerm',
    'change .source-select': function(e) {
        this.setModelSourceId(e);
        this.activateSource(e);
    }
},

您视图中的事件散列只是一种便利的“DSL”。 在initialize手动绑定你的第二个事件。

events: {
    'click .search-button': 'setModelTerm'
},
initialize: function () {
    _.bindAll(this);
    this.on('click .search-button', this.doAnotherThing);
}

唯一让你无法添加相同的事件/选择器对的eventsevents是一个散列 - jQuery可以处理多个绑定到相同的元素/事件对。 好消息是,jQuery事件允许你通过添加一个.myNamespace后缀命名空间事件。 实际上,这会产生相同的结果,但您可以生成许多不同的密钥。

var MyView = Backbone.View.extend({
  events: {
    'click .foo': 'doSomething',
    'click.a .foo': 'doSomethingElse', // you can choose any namespace as they are pretty much transparent.
  },

  doSomething: function() {
    // ...
  },

  doSomethingElse: function() {
    // ...
  },
});
链接地址: http://www.djcxy.com/p/63097.html

上一篇: Backbone trigger two methods in one event

下一篇: Backbone JS: can one view trigger updates in other views?