Knockout.js 复选框“;勾选“;没有正确切换

Knockout.js 复选框“;勾选“;没有正确切换,knockout.js,Knockout.js,当我选中复选框时,状态将成功更改(ajax调用成功,DB反映了技术),下面的范围也显示“check”,但复选框未被切换,因此“checked”属性无法正常工作。我错过了什么 <!-- ko foreach: Group--> <tr> <td> <span data-bind="text: TourName "></span> </td> <!-- ko if: $index() == 0 --&g

当我选中复选框时,状态将成功更改(ajax调用成功,DB反映了技术),下面的范围也显示“check”,但复选框未被切换,因此“checked”属性无法正常工作。我错过了什么

<!-- ko foreach: Group-->
<tr>
  <td>
    <span data-bind="text: TourName "></span>
  </td>
  <!-- ko if: $index() == 0 -->

  <td style="vertical-align:middle" data-bind="attr: { rowspan: $parent.Group().length }">

    <!-- ko if: $parent.Status() != 'DNB' -->
    <input type="checkbox" data-bind="checked: ($parent.Status() === 'CHECK'),click: $root.editSellStatus.bind($parent)" />
    <span data-bind="text: $parent.Status()"></span>
    <!-- /ko -->

  </td>

  <!-- /ko -->
</tr>
<!-- /ko -->
我的KO模型结构是这样的

class MyClass {
  Name: string;
  year: string;
  Group: Array<{
    GroupName: string;
    Status: string;
    subGroup: Array<{....}>;
  }>;
}
class-MyClass{
名称:字符串;
年份:字符串;
组:阵列;
}

因为您在复选框上使用单击绑定,所以您正在覆盖默认的单击行为,即使用复选标记更新复选框。要允许浏览器继续默认行为,您的click event函数必须返回真值

self.editStatus = function() {
    ...
    return true;
}
//这是我的编辑方法:
self.editStatus=函数(){
var状态=空;
if(this.Status()=='CHECK'){
此状态为空;
状态=空;
}else if(this.Status()==null){
该状态(“检查”);
状态='检查';
}
//$.ajax()
var test=this.Status();
返回true;
}
//我的KO模型结构是这样的。
函数MyClass(){
var self=这个;
this.Name=“Name”;
this.Id=“Id”;
今年=1999年;
此状态=可观察(空);
this.isChecked=ko.可观察(假);
this.Group=ko.array([{
群组名称:“群组1”,
TourName:“巡回赛1”,
状态:“状态”,
分组:[{
//空对象
}],
}, {
群组名称:“群组2”,
TourName:“巡演2”,
分组:[{
//空对象
}]
}
]);
this.editSellStatus=编辑状态;
}
应用绑定(新的MyClass())


需要您的KO模型、绑定和所有相关html。这还不足以让你知道发生了什么。你一开始就错过了一个机会。请发布所有相关代码。感谢您的帮助。成功了!
self.editStatus = function() {
    ...
    return true;
}