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