我确信这有一个合理的解释,但我无法弄清楚 - 我会非常感激一点指导。
我使用Backbone获得以下代码:
var ExampleCollection = Backbone.Collection.extend({
exampleEvent: function() {console.log('event fired')}
});
var ExampleView = Backbone.View.extend({
el:'body',
onExampleEvent: function() {console.log('listener heard it')},
initialize: function() {
this.listenTo(this.collection,'exampleEvent',this.onExampleEvent);
}
});
var testCollection = new ExampleCollection;
var testView = new ExampleView({collection:testCollection});
在控制台中,当我输入命令testCollection.trigger('exampleEvent')
时,onExampleEvent
回调函数会触发。但是,当我输入命令testCollection.exampleEvent()
时,exampleEvent
函数会触发,但onExampleEvent
回调函数不会触发。
如果有人能够向我解释为什么会发生这种情况,我会很感激,因为我一直在寻找一段时间而且无法理解。
非常感谢提前。
答案 0 :(得分:1)
想一想 - 当你打电话
testCollection.exampleEvent()
你只是执行它,而且......没什么。当
testCollection.trigger('exampleEvent')
调用,它执行函数和每个监听器。