28

これが可能かどうかはわかりませんが、依存オブザーバブルを介して何かが有効/無効になったときに検証システムに通知する検証システムがあるシナリオがあります。これは、依存するオブザーバブルが基礎となるオブザーバブルの値の変化から追い出されるため、ユーザーがフォームに記入しているときにうまく機能します。(つまり、 Name プロパティが変更された場合、isValid依存オブザーバブルが再評価され、検証システムにフックされるバインディングが通知されます)。

ここで私の問題は、ユーザーがフォームにまったく触れずに送信に直接進むと、オブザーバブルの基になる値が変更されていないため、バインディングがトリガーされないため、サブスクライバーは検証の変更を認識しないことです。ハプニング。理想的には、各オブザーバブルを調べて現在の変数を再割り当てして、検証評価をプッシュし、検証状態の変更をトリガーすることはしたくありません。したがって、私が本当にやりたいことは、このisValid依存オブザーバブルを取得して、より良い言葉がないために更新することです。

どちらにしても非常に厄介なようですが、私のオプションは次のいずれかのようです。

1) 検証されるすべてのオブザーバブルの値の変更を強制する (恐ろしい) 2) サブスクライバーをトリガーするために isValid の依存するオブザーバブルの再評価を強制する (それほど恐ろしいものではないが、それでも悪い) 3) 検証ライブラリを書き直してforceValidation()関数を公開するこれにより、何らかの形ですべての再評価がトリガーされ、基礎となるオブザーバブルが検証パイプラインをトリガーする必要がなくなります。

何か案は?

4

2 に答える 2

51

計算されたobservable(isValid)で、を呼び出すことができますnotifySubscribers(currentValue)。これにより、サブスクライバーに現在の値が通知されます。計算されたものを再評価せず、単に現在の値をサブスクライバーに通知します。

于 2012-03-01T16:19:13.507 に答える