backbone.js - 绑定(bind)时触发的 Backbone 事件

标签 backbone.js backbone-events backbone-views

我需要将点击事件绑定(bind)到一定数量的特殊div,应该绑定(bind)哪些div只有在运行时才知道 所以我想简单地为所有这些特殊的div设置一个类并将它们绑定(bind)在“事件”中,但是然后单击这些div之一将触发所有div触发 然后我尝试在事件中使用变量,但是这些变量只有在运行时才知道,所以事实证明它们在绑定(bind)事件时是未定义的 现在我使用 jQuery 在运行时绑定(bind) Backbone 内的事件,但是每当我初始化 View 时,事件就会立即触发

var RoomNumber = Backbone.View.extend({
    el: $('#roomColumn' + this.roomNumber),
    initialize: function () {
        _.bindAll(this, 'render');
        this.user = this.options.user;
        this.roomNumber = this.options.roomNumber;
        this.render();
        //$('#roomNumber'+this.roomNumber).on('click', this.enterBooking());
    },
    render: function () {
        $(this.el).append("<div class = 'roomNumber' id  = 'roomNumber" + this.roomNumber + "'>" + this.roomNumber + "</div>");
    },
    enterBooking: function () {
        var slideForm = new SlideForm({
            user: this.user,
            roomNumber: this.roomNumber,
            state: 'book',
            singleSchedule: new Schedule()
        });
    }
});

有人能解释一下为什么会发生这些吗?如何将事件绑定(bind)到动态生成的 div?

(我知道我可能不应该使用这样的主干 View ..但它是要求的一部分)

最佳答案

您的代码有两个问题:

  1. 回答您的观点,绑定(bind)时会触发事件,因为您在绑定(bind)时调用事件处理程序。

    $('#roomNumber'+this.roomNumber).on('click', this.enterBooking());
    应该是
    $('#roomNumber'+this.roomNumber).on('click', this.enterBooking);
    注意函数调用大括号。

  2. 你设置el的方式不对

    el: $('#roomColumn' + this.roomNumber),
    在主干中, View 的 el 属性在 之前设置调用initialize方法。这意味着主干将尝试查找非预期的元素 $('#roomColumnundefined') 。相反,您可以将 el 元素作为选项传递给 View

        var roomNumber = 3;
        var view = new RoomNumber({
            roomNumber:roomNumber,
            el:$('#roomColumn' + roomNumber)
        });
    

关于backbone.js - 绑定(bind)时触发的 Backbone 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11730738/

相关文章:

javascript - Uncaught Error : No define call for pnotify

javascript - 创建 Backbone.js 集合出现未定义错误

javascript - 按钮 Onclick 事件和 backbone.js View

javascript - 主干 View : Inherit and extend events from parent

javascript - 使用 Backbone 渲染表格

javascript - Backbone.js:为每个模型添加验证

javascript - 自定义排序 Backbone 集合

javascript - 当内容设置为 jQuery 对象时,谷歌地图信息窗口的大小不正确以适合图像

javascript - 在主干 View 中处理触摸事件

validation - backbone.validation 插件和服务器端验证