骨干在一个事件中触发两种方法
我正在使用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);
}
唯一让你无法添加相同的事件/选择器对的events
是events
是一个散列 - 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?