1

私は knockout.js の新しいユーザーであり、これまでのところ基本的な使用法に非常に感銘を受けています。

前のフィールド (yr1 Expense) に基づいてフィールド (yr2 Expense) を自動計算できるようにしたいのですが、ユーザーが自動計算フィールドを変更できるようにしたいと考えています。この自動計算フィールドは、別の計算 (Total Yr2) に使用されます。私はこのjsfiddleでそうしようとしましたが、これまでのところ運がありません。これを行う方法に関する情報が例に見つかりません。

私は最初に yr2 Expense をオブザーバブルにしようとしましたが、これは自動計算を許可しません。次に、yr2 Expense を計算されたものにしようとしましたが、これにより、Total Yr2 をユーザー入力で更新することはできません。私がやろうとしていることは不可能ですか?これは、私がこれを行っている財務計算フォームでは一般的だと思います。

4

1 に答える 1

1

まず第一に、変数名は理解しやすく、意図を明らかにする必要があります。フィドルで使用されているような、鈍い名前や省略された名前には何のメリットもありません。それらは紛らわしく、これによりコードのメンテナンスが難しくなります。後でjsを縮小する予定がある場合は、名前は関係ありません。後でコードを読む必要がある場合、完全でわかりやすい名前を付けておくと非常に役立ちます。

あなたが求めているものを達成するには2つの方法があります。

1 つの方法は、サブスクライバーを使用して、変更後にオブザーバブルの計算を変更することです。ページの下部付近にあるこれを参照してください。これは、この方法を示すフィドルです。この例では、この方法をお勧めします。

注:valueUpdateユーザーが入力を完了したときにのみ再計算が行われるように、省略しています。afterkeydown を使用すると、再計算が早くなり、問題が発生します。[Enter]再計算したいときに押してみてください。

2 番目の方法は、書き込み可能なオブザーバブル(2 番目のヘッダー、ページの 1/3 ダウン) を使用computed observablesして、読み取りおよび書き込みメソッドを作成することです。この方法がこの特定の例に適しているとは思いませんが、リンクされた KO ドキュメントの例で、どのような場合にうまく機能するかがわかります。

于 2012-06-27T23:34:38.980 に答える