該複選框的先進性在於,它不僅基於現有數據進行設置,而且頁面還必須以多種方式響應用戶通過手動檢查或取消選中來更改複選框。KnockoutJS +高級複選框功能
想象一下,你有一個murderCaseModel
與各種Witnesses
列表犯罪。
這裏是一個搗鼓你:
http://jsfiddle.net/maxgrr/j6fm7162/6/
的要求如下:
已經完成
如果以前
witnesses
從加載的數據存在,設置第l頁上的框的checked
狀態OAD<input type='checkbox' data-bind='checked: numWitnesses() > 0'></input>
- 刪除
Witness
- 添加
Witness
TODO
切換的複選框會導致頁面上的其他區域出現或消失
- 如果它被用戶切換爲「否」(未選中),我們使見證顯示區域INVISIBLE(理想情況下,從DOM中移除)並刪除所有對象。
- 如果它被切換到'是'(勾選),我們使見證顯示區域可見,並確保至少有一個對象可以由用戶填寫。
這整個問題對我來說非常棘手,並且確定了複選框的自動值,而且用戶選擇的值也很難掌握。任何幫助深表感謝。這是一個很酷的功能!
不可思議!你已經超越了。謝謝,真誠。我唯一不能從你的解決方案中理解的部分是爲什麼你在'(function(){})();'代碼中包裝'wereThereAnyWitnesses'計算值,'intitialValue'和'value'。 – Marcel
我用了一個IIFE(http://benalman.com/news/2010/11/immediately-invoked-function-expression/)爲'computed'創建一些私人「後臺」。由於「計算」本身僅公開讀/寫接口,因此我需要某處存儲實際值,這就是「值」變量。但是,我不希望這個變量在'computed'範圍之外是可用的,因爲它只需要'computed'來訪問(和修改)。爲了達到這個目標,IIFE是最終的(和通用的)解決方案。 – haim770
你是一個親!感謝您的資源。不過,我注意到有關解決方案的一點是,如果用戶取消選中該框並按下「添加見證」,則該複選框不會對此作出響應。你知道我們將如何完成響應的圈子嗎? – Marcel