2

オブジェクトが検証/保存されるまでモデルの更新を延期できるように、valueUpdate のカスタム イベントを作成する方法はありますか?

ドキュメントには次のように記載されています。

次の文字列値は、最も一般的に役立つ選択肢です。

「変更」...、「キーアップ」...、「キープレス」...、「キーダウン後」...

他の値が可能であることを暗示していますが、完全なリストがどこにあるかは述べていません。

モデルを更新せずにフォームを削除するキャンセルボタンを備えたポップアップフォーム(必要になるまで非表示のdiv)が必要です。モデルは、ユーザーが保存ボタンを押したときにのみ更新する必要があります。

(ここからこの質問を少しコピーしました。これを望んでいるのは私だけではないようですが、回答がありませんでした)

4

2 に答える 2

0

オブザーバブルから「beforeChange」通知ストリームにサブスクライブするオプションがあります。これにより、値が変化する前に値を検査する機会が得られます。

モデルの検証に実際に取り組む最も明白な方法は、「書き込み可能な」計算値を使用することです。これらにより、検証ロジックを組み込むことができます

于 2012-05-17T03:42:06.510 に答える
0

ドキュメントが意味することとは反対に、valueUpdateパラメーターは「変更を検出するために KO が使用する必要があるブラウザー イベントを定義する」ものではなく、デフォルトは「変更」です。常に捉えられる「変化」。

関連するコードは次のとおりです。

// Always catch "change" event; possibly other events too if asked
var eventsToCatch = ["change"];
var requestedEventsToCatch = allBindingsAccessor()["valueUpdate"];
if (requestedEventsToCatch) {
    if (typeof requestedEventsToCatch == "string") // Allow both individual event names, and arrays of event names
        requestedEventsToCatch = [requestedEventsToCatch];
    ko.utils.arrayPushAll(eventsToCatch, requestedEventsToCatch);
    eventsToCatch = ko.utils.arrayGetDistinctValues(eventsToCatch);
}

この動作は実際に要求され、実装されまし

ドキュメントが更新されていないようです。必要に応じて変更をリクエストする必要があり、ドキュメントで次のように伝えることをお勧めします。

"イベントのリスト。'change' を含め、[] を渡してモデルの自動更新を無効にすることをお勧めします"

于 2012-05-17T10:06:50.547 に答える