1

我确信对此有一个合理的解释,但我无法弄清楚 - 一些指导将不胜感激。

我有以下使用 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回调函数不会。

如果有人可以向我解释为什么会发生这种情况,我将不胜感激,因为我已经寻找了一段时间并且无法弄清楚。

提前谢谢了。

4

1 回答 1

1

想想看——当你打电话时

 testCollection.exampleEvent()

你只需执行它,然后......什么都没有。什么时候

 testCollection.trigger('exampleEvent')

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

于 2013-07-15T11:09:09.923 回答