可观察元素数组未更新

Array of observable elements is not updating

本文关键字:更新 数组 元素 观察      更新时间:2023-09-26

>我有可观察的数组,里面有一些对象。此对象的属性之一是可观察元素(字符串格式的日期)的数组。下面是一个可重现的小示例:

this.groups = ko.observableArray([{
    name:       ko.observable("name"),
    deadlines:  [
        ko.observable("2010-02-08"),
        ko.observable("2013-06-18"),
        ko.observable("2015-01-23"),
    ]
}]);

我以下列格式代表他们:

<tbody data-bind="foreach: groups">
        <tr>
            <td>
                <input type="text" placeholder="name" data-bind="value: name"><br><br><br>
                <span data-bind="text: name"></span>
            </td>
            <!-- ko foreach: deadlines -->
            <td>
                <input type="date" data-bind="value: $data"><br><br><br>
                <span data-bind="text: $data"></span>
            </td>
            <!-- /ko -->
        </tr>
    </tbody>

问题是当我更新其中一个日期时,它们没有更新。下面是一个 JSfiddle 示例:如您所见,当 2010-02-08 更新时,基础文本保持不变。

一开始我认为它与绑定中的日期有关,但在尝试此操作后,我发现事实并非如此。知道出了什么问题吗?

改为绑定到$rawData

<!-- ko foreach: deadlines -->
<td>
    <input type="date" data-bind="value: $rawData"><br><br><br>
    <span data-bind="text: $data"></span>
</td>
<!-- /ko -->

数组的项总是解开包装的,因此您有效地绑定到可观察量的值,而不是可观察量本身。 $rawData变量使您可以访问未解开包装的项目。