Javascript 未直观地更新每个数组的淘汰复选框

Javascript 未直观地更新每个数组的淘汰复选框,javascript,knockout.js,Javascript,Knockout.js,我有一个json数组,其中包含在foreach数据绑定中创建的元素。 然后,我将所选对象保留在该数组中,以便可以为该数组中的每个对象使用独立的“保存更改”按钮。除了复选框的绑定之外,所有这些都正常工作(例如primarycontactname) <div class="container span8" data-bind="foreach: locationssubscribed"> <div class="well span3" data-bind="click: $pa

我有一个json数组,其中包含在foreach数据绑定中创建的元素。 然后,我将所选对象保留在该数组中,以便可以为该数组中的每个对象使用独立的“保存更改”按钮。除了复选框的绑定之外,所有这些都正常工作(例如primarycontactname)

<div class="container span8" data-bind="foreach: locationssubscribed">
  <div class="well span3" data-bind="click: $parent.selectedLocationSubscribed">
    <input type="text" class="span3" data-bind="value: primarycontactname" placeholder="Contact Name.." />
    <br />      
    <div class="checkbox" data-bind="visible: (vendorbringinggifts() === 0 || vendorbringinggifts() === vendorid())">
      <input id="chkGiftsAreBeingBrought" type="checkbox" data-bind="checked: giftsarebeingbrought" />
    </div>
    <button data-bind="click: $root.saveVendorToLocation, enable: needsave, text: needsave() ? 'Save Location Changes' : 'No Changes to Save', css: { 'btn-primary': needsave }" class="btn">Save Location Changes</button>
  </div>
</div

目标是使复选框正常工作。我为压缩帖子而删除的基于文本框的其他绑定多年来一直正常工作,有些我现在被难倒了,不知道我用文本框到底做错了什么。

让我再确认一下,因此,如果用户单击
中的某个元素,
单击
绑定会阻止默认操作,那么您将尝试启用关联按钮并选中复选框。要启用默认操作。这意味着您不能直接将可观察对象传递给
单击
绑定

click: $parent.handleClick
JS:


好的,我发现如果我删除“click:$parent.selectedLocationSubscribed”,症状就会消失,但可以观察到的是我是如何对对象进行isDirty风格的跟踪的,这样我就知道该面板/对象是否需要允许用户保存他们的更改。如何将选中的绑定重新应用于元素?我已经实现了这一点,但问题仍然存在,当单击复选框时,复选框不会发生明显变化,但通过toJSON调用进行调试显示,在第一次单击时,基础观测值正在发生变化。所有后续单击都不会更改任何内容。当selectedLocationSubscribed发生更改时,复选框似乎正在失去其“已选中”数据绑定。是否有其他方法确保元素保留其复选框功能?谢谢您的帮助!这正在起作用。我真的很感激你花在这件事上的时间。
click: $parent.handleClick
self.handleClick = function (item) {
    // do something with item
    return true;  // don't prevent default action
}