次の簡単な例を考えてみましょう。
<input data-bind="value: query, valueUpdate: 'afterkeydown'"/>
knockoutjs 2.1.0 では、ctrl、Up arrow、Down arrowのいずれかを押してもShiftバインディングが起動されずquery
、更新されません。
knockoutjs 2.2.0 では、上記のすべてのキー押下に対してバインディングが起動します。
これは、いくつかの既存のコードに大混乱をもたらしています (これはオートコンプリートであり、ドロップダウンから選択するために上下矢印が頻繁に使用されます)。
正しい動作はどれですか? これらのキーを押すことはキーダウンイベントであるため、技術的には後者が正しいと思いますが、値が変更された場合にのみバインディングが起動するべきではありませんか?
すべてをリアルタイムで維持したいのですが、ドキュメントの状態は次のとおりです。
ビューモデルをリアルタイムで更新したい場合は、「afterkeydown」が最適です。
提案?
- ko 2.1.0 デモ: http://jsfiddle.net/Rmcza/7/
- ko 2.2.0 デモ: http://jsfiddle.net/Rmcza/8/