これが可能かどうかは確かではありませんが、何かが有効な/無効な従属オブザーバブルを経由して検証システムに通知するシナリオがあります。これは、dependantObservableが基になるobservablesの値が変更されてしまうため、ユーザーがフォームに記入するときに効果的です。 (つまり、Nameプロパティが変更された場合は、isValid
の依存関係を再評価し、バインディングに検証システムへのフックを通知します)。手動でdependantObservableを再評価するためのノックアウトを取得
私の問題は、ユーザーがフォームにまったく触れず、すぐに提出に行くと、観察値の基になる値が変更されていないため、バインディングがトリガーされないため、起こっている検証の変更について理想的には、私は各観測値を調べ、それを現在の変数に代入して検証評価をプッシュし、検証状態の変更をトリガーすることは望ましくありません。だから私がしたいのは、isValid
dependantObservableをに更新することです。より良い言葉がないのは、です。
これはかなりのいずれかの厄介な方法と思われるが、私のオプションは、いずれかのように見える:(恐ろしい) 2に対して検証されている全ての観測上の値の変更を強制)
1)のisValid dependantObservableの再評価を強制サブスクライバーをトリガーするには 3)バリデーションライブラリを書き換えてforceValidation()
関数を公開すると、何らかの理由で再評価が行われ、基礎となるオブザーバが検証パイプラインをトリガーする必要はありません。
アイデア?
私はまた、「notifySubscribers(currentValue)」が仕事をしているとも言われましたが、最初に読み込みが必要ない場合は、より良い解決策です。ありがとう! – Grofit
valueHasMutatedは、observableに内部的に格納されている現在の値を送信し、notifySubscribersは最初のargとして渡す値を送信します(ケースの現在の値を読み取る必要があります)。 –
@RPNiemeyerこの仕組みについて何か変更はありますか? 2.3.0では、 'Object ...はメソッドがありません 'valueHasMutated''を呼び出すのに対し、' myComputed.notifySubscribers(myComputed())'を呼び出すとエラーは発生しません。 – ach