我是knockout.js的新用户,到目前为止对基本使用印象非常深刻。
我希望能够根据前一个字段(yr1 Expense)自动计算字段(yr2 Expense),但也允许用户更改自动计算字段。然后,该自动计算字段用于另一计算(总Yr2)。我一直试图用jsfiddle这样做,但到目前为止没有运气。我在示例中找不到有关如何执行此操作的任何信息。
我首先尝试使yr2 Expense成为一个observable,它不允许自动计算。然后我尝试使yr2 Expense成为计算机,这不允许使用用户输入更新Total Yr2。我想做的不可能吗?我认为这在财务计算表格中很常见,这正是我为此所做的。
答案 0 :(得分:1)
首先,变量名称应该易于理解并且意图揭示。钝角或缩写名称没有任何好处,比如你的小提琴中使用的名称。它们令人困惑,这增加了代码维护的难度。如果你打算稍后缩小你的js,那么这些名字无论如何都不重要。如果您以后需要读取您的代码,拥有完整,易于理解的名称会有很大帮助。
有两种方法可以完成你的目标。
一种方法是使用订户在更改后更改observable的计算。见this, near the bottom of the page。这是一种fiddle demonstrating这种方法。对于此示例,我建议使用此方法。
注意:我将离开valueUpdate
,以便仅在用户完成输入时才会重新计算。如果你使用afterkeydown,它将提前重新生成,导致问题。如果要重新计算,请尝试按[Enter]
。
第二种方法是使用writable observables(第二个标题,页面下方的1/3)来制作具有读写方法的computed observables
。我不认为这个方法适合这个特定的例子,但链接的KO文档中的例子应该让你知道它何时运行良好。