1

我是 knockout.js 的新用户,到目前为止,我对基本使用印象深刻。

我希望能够根据前一个字段(yr1 Expense)自动计算一个字段(yr2 Expense),但也允许用户更改自动计算的字段。然后,此自动计算字段将用于另一个计算(Total Yr2)。我一直在尝试用这个jsfiddle这样做,但到目前为止还没有运气。我在示例中找不到有关如何执行此操作的任何信息。

我首先尝试将 yr2 Expense 设为 observable,它不允许自动计算。然后,我尝试将 yr2 Expense 设为计算值,这不允许使用用户输入更新 Total Yr2。我想做的事是不可能的吗?我认为这在财务计算表格中很常见,这就是我这样做的目的。

4

1 回答 1

1

首先,变量名应该易于理解和表达意图。钝化或缩写名称没有任何好处,就像你的小提琴中使用的那样。它们令人困惑,这增加了代码维护的难度。如果您打算稍后缩小您的 js,那么名称无论如何都无关紧要。如果您以后需要阅读您的代码,拥有完整、易于理解的名称会大有帮助。

有两种方法可以完成你所追求的。

一种方法是使用订阅者在更改后更改 observable 的计算。看到这个,在页面底部附近。这是演示此方法的小提琴。对于这个例子,我推荐这种方法。

注意:我将离开,valueUpdate以便仅在用户完成键入时才进行重新计算。如果你使用 afterkeydown,它会提前重新计算,导致问题。[Enter]当您希望它重新计算时,请尝试按下。

第二种方法是使用可写的可观察对象(第二个标题,页面下方的 1/3)使其computed observables具有读取和写入方法。我认为这种方法不太适合这个特定的示例,但是链接的 KO 文档中的示例应该让您了解它何时可以正常工作。

于 2012-06-27T23:34:38.980 回答