2

我正在学习 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();
    },
4

2 回答 2

1

本例中的 on 方法来自 Backbone 的 Event 模块。它接受三个参数——事件名称、函数和上下文。上下文决定了函数内部“this”的值。

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

于 2012-11-16T11:12:23.670 回答
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 );
},
于 2012-11-16T11:16:22.397 回答