0

所以我有一个集合,我循环显示一些数据。每行旁边都有一个删除按钮,用于从 observableArray 集合中删除给定行的 $data。它可以很好地删除它,但这就是问题所在。每行上的一些输入字段都有一个我创建的自定义绑定来进行一些验证。当用户与表单交互时,自定义绑定的更新事件会被触发。但是当用户删除一行时,更新事件不会触发!

这完全打乱了我的验证状态。有谁知道这里发生了什么?

这是针对此问题的jsfiddle 。

更新:此外,在更新事件确实因更改而被调用的情况下,事件被调用的顺序是有问题的。如果我删除一个元素,更新事件会首先被调用,因为对可观察对象进行了一些更新,此时元素本身仍在 DOM 中。所以我无法在更新事件中知道正在更新的元素是否仍然存在于 DOM 中!

4

1 回答 1

0

在您的示例中,绑定仅在可观察项目上而不在数组上。将您的绑定添加到 observableArray - 在您的示例中附加到 foreach 绑定

<div data-bind="foreach: firstNames, validators:true">
    <input type="text" data-bind="value: firstname, validators:true" />
    <span data-bind="text: firstname"></span>
    <input type="button" value="remove" data-bind="click: $root.deleteRow" /><br />
</div>

问候@all

于 2012-09-14T21:52:21.220 回答