【问题标题】:checkbox data-bind using knockout.js and jquery mobile使用 knockout.js 和 jquery mobile 进行复选框数据绑定
【发布时间】:2013-09-22 13:50:50
【问题描述】:

我在使用 knockout.js 进行数据绑定复选框时遇到问题。 jsfiddle http://jsfiddle.net/sajesh1985/ypbLN/

(HTML)代码:

<h2>View1</h2>
<h4>Select Columns:</h4>
<ul data-bind="foreach: gridOptions.columns" data-role="listview">
<div data-role="fieldcontain" >
<li id="li">     
    <label>
        <input type="checkbox" id="chk" data-bind="event: {change: function(){ checked(!checked()); } }, checkbox: checked" /> <span data-bind="text: header"></span>
    </label>
</li>
</div>
</ul>
<hr>
<table>
<thead>
    <tr data-bind="foreach: gridOptions.columns">
        <th data-bind="visible:checked, text: header"></th>
    </tr>
</thead>
<tbody data-bind="foreach: people">
    <tr data-bind="foreach: $parent.gridOptions.columns">
        <td data-bind="text: $parent[dataMember], visible:checked"></td>
    </tr>
</tbody>
</table>

JS代码:

var ProductSearchViewModel = {

gridOptions: {
    columns: [{
        header: 'First Name',
        dataMember: 'firstName',
        checked: ko.observable(true)
    }, {
        header: 'Last Name',
        dataMember: 'lastName',
        checked: ko.observable(true)
    }]
},

people: [{
    firstName: 'Bert',
    lastName: 'Bertington'
}, {
    firstName: 'Charles',
    lastName: 'Charlesforth'
}, {
    firstName: 'Denise',
    lastName: 'Dentiste'
}]


};

ko.bindingHandlers.checkbox = {
update: function (element, valueAccessor) {

    var value = valueAccessor();

    var valueUnwrapped = ko.utils.unwrapObservable(value);

    //$(element).checkboxradio().trigger('create');               
    $(element).attr("checked", valueUnwrapped).checkboxradio("refresh");

}
};

$(document).ready(function () {
ko.applyBindings(ProductSearchViewModel);    
});

您能帮我解决这个问题吗? 我得到 Uncaught cannot call methods on checkboxradio 在初始化之前;试图在浏览器中调用方法“刷新”。

【问题讨论】:

  • 如果没有在此处发布代码,很难为您提供解决方案。从错误中,您在创建复选框或更改其属性之前触发(刷新)。

标签: jquery-mobile knockout.js


【解决方案1】:

绑定复选框的最佳方式是使用 checked 绑定,如下所示:

<input type="checkbox" id="chk" data-bind="checked: checked" />

另见文档:http://knockoutjs.com/documentation/checked-binding.html

【讨论】:

  • 同意,但这与 jquery 移动自定义复选框有问题
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2015-03-28
  • 2012-04-08
  • 2012-11-22
  • 1970-01-01
  • 2014-07-24
  • 1970-01-01
相关资源
最近更新 更多