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 に答える