Heim > Fragen und Antworten > Hauptteil
下面一段简单的代码里有个this看不懂他什么意思,
var NoteCollectionView = Backbone.View.extend({
tagName: 'ul',
initialize: function () {
this.collection.on('add', this.addOne, this);
this.render();
},
render: function () {
this.collection.each(this.addOne, this);
return this;
},
addOne: function(note) {
var noteView = new NoteView({model: note});
this.$el.append(noteView.render().el);
}
});
var noteCollection = new NoteCollection([note1, note2, note3]);
var noteCollectionView = new NoteCollectionView({collection: noteCollection});
请问下面那两个加粗的this什么作用,代码的作者说是取得上下文的作用,但是没说具体什么意思?
为什么要放两个this取得上下文啊? 多谢~嘿嘿
initialize: function () {
this.collection.on('add', this.addOne, **this**);
this.render();
},
render: function () {
this.collection.each(this.addOne, **this**);
return this;
},
怪我咯2017-04-10 16:07:54
传人一个context
参数来修改当前上下文,控制this的指向。
object.on(event, handler, [context])
如果你传入context那么当前上下文就是你所传入的context, this也指向它。如果不传入this就指向实例化的对象(根据题主的代码就是collection对象)。
简单的说他的这种做法其实就是让this指向view对象而不是指向collection对象。
阿神2017-04-10 16:07:54
就是上下文啊,你在绑定事件的时候,是得放入一个上下文环境的(Context),否则你触发这个方法的时候,它怎么知道是谁(哪个对象)调用此方法啊,具体请查看Backbone的Events源码