Mar*_*cel 3 javascript checkbox jquery knockout.js
我有一个高级复选框,根据初始数据选中或取消选中,然后当用户手动检查或取消选中时,它也会响应.以前对于我更原始的复选框,我真的很喜欢使用此处的复选框.
唯一的问题是它与Knockout无法正常工作.请注意初始化自定义复选框时复选框的响应方式.但是,如果从JavaScript底部删除此代码,它将按预期工作.
// INITIALIZE CHECKBOX
$('#witnessSlider').checkboxpicker();
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴:
http://jsfiddle.net/maxgrr/r23q740u/1/
这也适用于各种其他类型的自定义复选框.
由于您正在引入一个自定义插件,该插件将您的本机复选框转换为更复杂的结构,因此内置checked绑定处理程序不再能够检测到更改,因为它本身适用于this.checked本机<input type="checkbox" />元素(现在已隐藏) ).
因此,您需要一个更易于插件的处理程序,它可以在自定义复选框发生变化时更新视图模型,并在模型更改时更新插件.
以下checkboxpicker处理程序就是这样做的:init只调用一次函数来设置插件,根据当前视图模型状态(值的值wereThereAnyWitnesses)设置其初始状态,并将监听器(change)注册到将来更新的任何未来更改视图模型.
update每次视图模型更改时都会调用该函数,并负责相应地更新自定义复选框状态.
ko.bindingHandlers.checkboxpicker =
{
init: function(element, valueAccessor){
var val = valueAccessor();
$(element).checkboxpicker().prop('checked', val()).change(function() {
val(this.checked);
});
},
update: function(element, valueAccessor) {
var val = valueAccessor();
$(element).prop('checked', val());
}
};
Run Code Online (Sandbox Code Playgroud)
在你的HTML中:
<input type="checkbox" data-bind="checkboxpicker: wereThereAnyWitnesses" />
Run Code Online (Sandbox Code Playgroud)
见小提琴
| 归档时间: |
|
| 查看次数: |
769 次 |
| 最近记录: |