Backbone.js查看事件禁用启用

时间:2012-09-22 08:53:37

标签: backbone.js

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

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

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

感谢您的回答

2 个答案:

答案 0 :(得分:2)

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

// .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"

答案 1 :(得分:2)

使用delegateEventsundelegateEvents进行绑定和解除绑定事件。检查参考:delegateEvents