事件侦听器回调不会通过正常的函数调用触发

时间:2013-07-15 11:04:59

标签: javascript backbone.js

我确信这有一个合理的解释,但我无法弄清楚 - 我会非常感激一点指导。

我使用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回调函数不会触发。

如果有人能够向我解释为什么会发生这种情况,我会很感激,因为我一直在寻找一段时间而且无法理解。

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

想一想 - 当你打电话

 testCollection.exampleEvent()

你只是执行它,而且......没什么。当

 testCollection.trigger('exampleEvent')
调用

,它执行函数和每个监听器。