javascript - self.el 与 this.el

标签 javascript jquery backbone.js

我正在关注 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/

相关文章:

javascript - 我正在尝试使用 next.js 转换我现有的 react 应用程序。这是正确的做法吗?

jquery - 为什么 nth-child(1) 适用于所有 child ?

javascript - 主干事件委托(delegate) eventName 问题

javascript - jQuery 用户界面 : How to pass values to dialog

javascript - 谷歌地图自定义图 block 图层输入 onclick 添加相同图层两次

jquery - Bootstrap carousel 一次传送多个帧

jquery - CSS Accordion 菜单,在 IE Quirks 模式下不起作用

javascript - Backbone.js 默认路径(子域)

javascript - 在 Backbone.js 中使用什么来代替 "this"?

javascript - 字符集有什么问题?