我正在尝试动态地将复选框和标签元素添加到文档中. CheckBox元素具有Knockout的data-bind属性,可将其值绑定到viewmodel中的可观察值.但是,当我尝试通过执行来设置jQuery Mobile的复选框样式时
$('input[type="checkBox"]').checkBoxradio();
数据绑定属性将被删除.如果我省略上面的行,则正确设置数据绑定属性并且绑定有效.
有没有办法同时拥有jQuery Mobile样式和Knockout绑定?
我正在使用jQuery Mobile RC1和Knockout 1.2.1.
解决方法
我也遇到过这个问题.不幸的是,这里的所有建议要么对我不起作用,要么有其他问题.所以我创建了一个简单的自定义绑定,适用于所有版本的KO(包括最新的v3):
ko.bindingHandlers.jqmChecked = { init: ko.bindingHandlers.checked.init,update: function (element,valueAccessor) { //KO v3 and prevIoUs versions of KO handle this differently //KO v3 does not use 'update' for 'checked' binding if (ko.bindingHandlers.checked.update) ko.bindingHandlers.checked.update.apply(this,arguments); //for KO < v3,delegate the call else ko.utils.unwrapObservable(valueAccessor()); //for KO v3,force a subscription to get further updates if ($(element).data("mobile-checkBoxradio")) //calling 'refresh' only if already enhanced by JQM $(element).checkBoxradio('refresh'); } };
应该像这样使用:
<input type="checkBox" data-bind="jqmChecked: someValue" id="checkBox1"/>
请在此处查看完整的工作示例: