Cal*_*ass 1 javascript jquery dom dom-events backbone.js
我正在尝试将一个复选框连接到我的视图,但是只要我勾选它,它就会保持检查状态,即使我再次单击它也是如此?
这是视图的一部分:
views.PaginatedView = Backbone.View.extend({
events: {
'click input.completedEnquiries': 'filterCompletedEnquiries'
},
filterCompletedEnquiries: function (e) {
return e.currentTarget.checked;
}
});
Run Code Online (Sandbox Code Playgroud)
继承人的模板:
<label>Show Completed: <input type="checkbox" class="completedEnquiries" /></label>
Run Code Online (Sandbox Code Playgroud)
我不知道我在这里做错了什么?
这是问题的解答:http://jsfiddle.net/9cvVv/167/
问题是e.currentTarget.checked
从您的事件处理程序返回.返回true
或false
从此处理程序返回将选中或取消选中该框
filterCompletedEnquiries: function(e) {
//return e.currentTarget.checked;
},
Run Code Online (Sandbox Code Playgroud)
注释掉那个返回语句,它运行正常.您仍然可以获取信息,但不要从方法中返回任何内容.
filterCompletedEnquiries: function(e) {
var isChecked = e.currentTarget.checked;
// do stuff here, based on it being checked or not
},
Run Code Online (Sandbox Code Playgroud)
这是一个例子,基于评论中的对话:
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
}
}
});
Run Code Online (Sandbox Code Playgroud)
这只是您拥有的众多选项之一,可以按照您的方式进行.
归档时间: |
|
查看次数: |
7640 次 |
最近记录: |