Javascript 如何将对$data的更改传播回Knockout';s视图模型?

Javascript 如何将对$data的更改传播回Knockout';s视图模型?,javascript,knockout.js,Javascript,Knockout.js,我使用Knockout.js获得了以下代码,将布尔数组显示为一系列复选框: <table> <tr data-bind="foreach: Array"> <td><input type=checkbox data-bind="checked:$data"></td> </tr> <tr data-bind="foreach: Array"> <td data-bind="tex

我使用Knockout.js获得了以下代码,将布尔数组显示为一系列复选框:

<table>
  <tr data-bind="foreach: Array">
    <td><input type=checkbox data-bind="checked:$data"></td>
  </tr>
  <tr data-bind="foreach: Array">
    <td data-bind="text:$data"></td>
  </tr>
</table>
<button data-bind="click: toggle0">Toggle Element 0</button>

<script>
var simpleModel = {
  "Array" : ko.observableArray([ko.observable(false),
                                ko.observable(false),
                                ko.observable(true)]),
  "toggle0" : function() {
      simpleModel.Array()[0](!simpleModel.Array()[0]());
  }
};
ko.applyBindings(simpleModel);
</script>

切换元素0
var simpleModel={
“数组”:ko.observable Array([ko.observable(false)),
ko.可观察(假),
ko.可观察(真实)],
“toggle0”:函数(){
simpleModel.Array()[0](!simpleModel.Array()[0]());
}
};
ko.applyBindings(simpleModel);
如果查看,可以看到,虽然复选框响应视图模型中的更改,但视图模型不响应复选框中的更改

根据,它看起来像是foreach循环打开了
$data
,因此
数据绑定
不知道如何使用它来更新模型


显然,我可以通过使数组包含对象而不是简单的布尔来解决这个问题,但这似乎是一个不必要的额外间接层。是否有更简单的方法将更改传播回模型?

似乎没有这样做的方法,因为在本例中,$data是未包装的值

即使设置单击处理程序也不起作用,因为发送给处理程序的数据也会被展开

糟糕透了。看起来唯一的方法是将你的可观察对象包装成一个对象,另一个间接层