gpt4 book ai didi

javascript - 如何将对 $data 的更改传播回 Knockout 的 View 模型?

转载 作者:行者123 更新时间:2023-11-30 06:00:55 25 4
gpt4 key购买 nike

我有以下代码使用 Knockout.js 将 bool 值数组显示为一系列复选框:

<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>

如果你看http://jsfiddle.net/tP9Dm/3/ ,您可以看到,虽然复选框会响应 View 模型中的更改,但 View 模型不会响应复选框中的更改。

根据 https://groups.google.com/d/msg/knockoutjs/-dHpOg5ZBPI/1q4iqdTlKvUJ ,它看起来像 $data 被 foreach 循环打开,所以 data-bind 不知道用它来更新模型。

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

最佳答案

似乎没有办法做到这一点,因为在这种情况下 $data 是展开的值。

即使设置点击处理程序也不起作用,因为发送到您的处理程序的数据也未包装。

无赖。看起来唯一的方法是将您的可观察对象包装到一个对象中,这是另一个间接层。

关于javascript - 如何将对 $data 的更改传播回 Knockout 的 View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com