2012-06-27 53 views
1

我是knockout.js的新用戶,至今對基本用法印象深刻。計算html輸入字段並允許用戶修改該字段

我希望能夠根據以前的字段(yr1 Expense)自動計算字段(yr2 Expense),但也允許用戶更改自動計算的字段。這個自動計算的字段然後用於另一個計算(總Yr2)。我一直試圖用jsfiddle這樣做,但到目前爲止還沒有運氣。在關於如何執行此操作的示例中,我找不到任何信息。

我第一次嘗試使yr2費用一個observable,它不允許自動計算。然後,我嘗試使yr2費用計算出來,這不允許用用戶輸入更新Total Yr2。我試圖做的是不可能的?我認爲這在財務計算表格中很常見,這就是我爲此所做的。

+0

'return this.opYr1Hoa();'有趣的樂趣。 –

回答

1

首先,變量名應該容易理解,意圖揭示。鈍頭或縮寫名字沒有好處,就像你的小提琴中使用的名字一樣。它們令人困惑,這增加了代碼維護的難度。如果你打算在晚些時候縮小你的js,那麼名字不管用。如果您以後需要請仔細閱讀您的代碼,那麼完整,易於理解的名稱將有很大的幫助。

有兩種方法可以完成您的工作。

一種方法是使用訂閱者在更改後更改觀察值的計算。請參閱this, near the bottom of the page。這是一個fiddle demonstrating這種方法。對於這個例子,我推薦這種方法。

注意:我正在離開valueUpdate,以便重新計算僅在用戶完成打字時纔會發生。如果你使用afterkeydown,它會提前重新計算,導致問題。當您想要重新計算時,請嘗試按[Enter]

第二種方法是使用writable observables(第二個標題,在頁面下1/3)使computed observables具有讀取和寫入方法。我不認爲這種方法適合這個特定的例子,但是在鏈接的KO文檔中的例子應該讓你知道它何時運行良好。

+0

謝謝,完美的作品(訂戶)。我爲可怕的變量名稱表示歉意,在完成其餘部分的工作時,我一定會留意這一點。 – jtiger

相關問題