Backbone.js on(),最后这个引用了什么?

时间:2012-11-16 10:54:35

标签: jquery backbone.js

我正在学习Backbone,我正在试图找出我正在使用'on'函数的库。我认为这是jQuery,但如果是这样,我不理解API。有人可以解释'on'功能或将我链接到一些文档。第一个参数是事件。第二个参数是被调用的函数。最后的'this'是指什么(我假设调用类),为什么需要它?这是我直接来自Addy Osmani的代码,这是AppView:

    initialize : function() {
        this.input = this.$('#new-todo');
        this.allCheckbox = this.$('#toggle-all')[0];
        this.$footer = this.$('#footer');
        this.$main = this.$('#main');

        window.app.Todos.on('add', this.addOne, this);
        window.app.Todos.on('reset', this.addAll, this);
        window.app.Todos.on('change:completed', this.filterOne, this);
        window.app.Todos.on("filter", this.filterAll, this);

        window.app.Todos.on('all', this.render, this);

        app.Todos.fetch();
    },

2 个答案:

答案 0 :(得分:1)

这种情况下的on方法来自Backbone的Event模块。它接受三个参数 - 事件名称,函数和上下文。上下文决定函数内“this”的值应该是什么。

Todos.on("filter", this.filterAll, this);你只是要求函数filterAll里面'this'的值应该是你的视图实例

答案 1 :(得分:0)

object.on(event, callback, [context])

根据backbone.js doc,最后一个 [context] 参数是将传递给回调函数的可选上下文。

在Addy的ToDo示例中, this 正在传递对点击的 todo 视图的引用:

// Add a single todo item to the list by creating a view for it, and
// appending its element to the `<ul>`.
addOne: function( todo ) {
    var view = new app.TodoView({ model: todo });
    $('#todo-list').append( view.render().el );
},