2

如果我在backbone.js 中有一个视图并且它在事件列表中有一个事件:

events: {
    'click #somebutton': 'clicked'         
},
clicked: function () {
    console.log('clicked');
}

然后如何禁用/启用该事件?因此,例如,如果它被单击,则事件被删除(按钮保留在屏幕上,但呈灰色显示等)。当视图的其他部分更新或启用任何事件时。当然我可以使用 jquery,但我想知道这个功能在主干中是否可用。

感谢您的任何回答

保罗

4

2 回答 2

2

您始终可以使用delegateEvents()undelegateEvents()重做 DOM 和 Backbone 视图之间的事件绑定。也就是说,我通常只保留事件处理程序并在处理程序中添加条件。

// .disabled class (CSS) grays out the button

clicked: function(event) {
    var buttonEl = $(event.currentTarget);

    if (buttonEl.hasClass('disabled')) {
        // Do nothing
    } else {
        // Do something AND...
        buttonEl.addClass('disabled');
    }
}

removeClass('disabled')然后,当您想要恢复功能时,您就可以拥有其他视图或代码。

更新 - 禁用属性

请参阅评论,但更简单、更好的解决方案是使用disabled="disabled"按钮的 disabled 属性。

于 2012-09-22T09:05:30.910 回答
2

用于绑定和解除绑定事件delegateEventsundelegateEvents检查参考:delegateEvents

于 2012-09-22T09:07:01.657 回答