从knockout observableArray中删除项目会导致jquery-validation中的异常

时间:2012-11-08 17:54:15

标签: knockout.js jquery-validate

我正在尝试将jquery验证与knockoutjs结合使用。我绑定到observableArray并使用模板中的复选框。取消选中该复选框后,该项目将从observableArray中删除。发生这种情况后,会发生异常“未捕获的TypeError:无法读取来自jquery验证的null属性'nodeName'。要查看此异常,您可以使用chrome开发人员工具进行观察。

这是我的代码的一个方面:http://jsfiddle.net/dgHS3/28/

这是html

<form id="myForm">
<table>
    <thead>
        <tr>
            <th>Use</th>
            <th>Caption</th>
        </tr>
    </thead>

    <tbody data-bind="foreach: selectedFields">
        <tr > 
            <td><input type="checkbox" data-bind="checked: IsSelected, uniqueName: true, click: $root.addRemoveField" /></td>
            <td><input class="required" data-bind="value: Caption, enable: IsSelected, uniqueName: true" /></td>
        </tr>
    </tbody>

这是javascript:

function FieldData(data) {
    var self = this;
    self.Caption = ko.observable(data.Caption);
    self.IsSelected = ko.observable(data.IsSelected);
}

function myViewModel() {
    var self = this;

    self.selectedFields = ko.observableArray([]);


    init = function () {
        var data = new Object();

        data.Caption = "cap1";
        data.IsSelected = true;

        var flds = [];
        var fld = new FieldData(data);
        flds.push(fld);

        self.selectedFields(flds);

    }();

    self.addRemoveField = function (field) {
        if (field.IsSelected()) {
            self.selectedFields.push(field);
        }
        else {
            self.selectedFields.remove(field);
        }

        return true;
    };

}

var vm = new myViewModel();
ko.applyBindings(vm);

0 个答案:

没有答案