主干-复选框保持选中状态

Backbone - Checkbox stays checked?

本文关键字:状态 复选框 主干      更新时间:2023-09-26

我试图将一个复选框挂接到我的视图,但只要我勾选它,它就会保持选中状态,即使我再次单击它?

以下是部分视图:

views.PaginatedView = Backbone.View.extend({
    events: {
        'click input.completedEnquiries': 'filterCompletedEnquiries'
    },
    filterCompletedEnquiries: function (e) {
        return e.currentTarget.checked;
    }
});

模板如下:

<label>Show Completed: <input type="checkbox" class="completedEnquiries" /></label>

我不知道我在这里做错了什么?

编辑

以下是问题的细节:http://jsfiddle.net/9cvVv/167/

问题是从事件处理程序返回e.currentTarget.checked。从该处理程序返回truefalse将选中或取消选中的框


 filterCompletedEnquiries: function(e) {
        //return e.currentTarget.checked;
    },

注释掉那个return语句,它运行良好。您仍然可以获取信息,但不要从该方法返回任何信息。


 filterCompletedEnquiries: function(e) {
        var isChecked = e.currentTarget.checked;
        // do stuff here, based on it being checked or not
    },

编辑

下面是一个例子,基于评论中的对话:


views.PaginatedView = Backbone.View.extend({
    events: {
        'click input.completedEnquiries': 'completedEnquiriesClicked'
    },
    // this is explicitly an event handler, and that's all it should be used for
    completedEnquiriesClicked: function(e){
      this.showCompletedEnquiries = e.currentTarget.checked;
    },
    doSomething Else: function (e) {
        // now that we need to know, we can just check that attribute
        if (this.showCompletedEnquiries){
          // do something here
        }
    }
});

这只是你可以选择的众多选项之一,让它以你想要的方式工作。