Backbone.js 查看事件禁用启用

标签 backbone.js

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

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

我怎样才能禁用/启用该事件?例如,如果点击了 事件被删除(按钮保留在屏幕上但呈灰色等)。当 View 的其他部分更新或发生任何事件时 已启用。当然我可以使用 jquery,但我想知道这个功能在主干中是否可用。

感谢您的回答

保罗

最佳答案

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

// .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');
    }
}

然后,当您想要恢复功能时,您可以简单地使用其他 View 或代码removeClass('disabled')

更新 - 禁用属性

查看评论,但更简单、更好的解决方案是使用按钮的禁用属性 disabled="disabled"

关于Backbone.js 查看事件禁用启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12542325/

相关文章:

javascript - Backbone .js : Structuring Application for fixed side panels

list - Backbone Marionette CompositeView 排序列表 - 在添加时呈现额外的模型

javascript - 将 JSON 传递给 Backbone.Marionette View 的模板

javascript - Backbone View 的窗口调整事件

javascript - 如何将 2 个处理程序附加到同一个事件?

javascript - Backbone : Show validation errors for each model in a collection on VIEW

javascript - 主干模型服务器端和内存处理

javascript - 通过主干将数据发布到 RESTful

javascript - 如何更新数据库中的整个 Backbone.js 集合?

javascript - Backbone 构造函数调用自身