我正在关注 backbone.js tutorial并遇到了 2 个函数 initialize()
和 render()
。 initialize()
在附加一些 html 时使用了 $(self.el).append()
而 render()
使用了 $(this .el).append()
.我对差异感到困惑,希望得到解释,谢谢!
JS代码
// Views
window.WineListView = Backbone.View.extend({
tagName:'ul',
initialize:function () {
this.model.bind("reset", this.render, this);
var self = this;
this.model.bind("add", function (wine) {
$(self.el).append(new WineListItemView({model:wine}).render().el);
});
},
render:function (eventName) {
_.each(this.model.models, function (wine) {
$(this.el).append(new WineListItemView({model:wine}).render().el);
}, this);
return this;
}
});
最佳答案
第一个使用 self
在事件触发时范围发生变化时保持对 this
的引用。在匿名函数(对于事件处理程序)内,this
将引用触发事件的元素,而不是您的 Backbone Controller 。
在第二种情况下不需要引用。
关于javascript - self.el 与 this.el,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014761/