如果我在backbone.js中有一个View,并且它在事件列表中有一个事件:
events: {
'click #somebutton': 'clicked'
},
clicked: function () {
console.log('clicked');
}
如何禁用/启用该事件?所以,例如,如果点击它 事件被删除(按钮保留在屏幕上,但显示为灰色等)。当视图的其他部分更新或任何事件 启用。当然我可以使用jquery,但我想知道这个功能是否在骨干网中可用。
感谢您的回答
保
答案 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)
使用delegateEvents
和undelegateEvents
进行绑定和解除绑定事件。检查参考:delegateEvents