我想實現一個項目列表,每個項目都有一個複選框來選擇項目。在列表頂部,有2個單選按鈕可以檢查全部或沒有項目。但是,當我更新選定列表時,複選框未被選中。我在這裏有一個小提琴來說明問題: http://jsfiddle.net/hawaii/VcZBf/2/在項目列表中選擇全部並且沒有項目,在knockoutjs中
請問你們能幫我解決這個問題嗎?
謝謝
我想實現一個項目列表,每個項目都有一個複選框來選擇項目。在列表頂部,有2個單選按鈕可以檢查全部或沒有項目。但是,當我更新選定列表時,複選框未被選中。我在這裏有一個小提琴來說明問題: http://jsfiddle.net/hawaii/VcZBf/2/在項目列表中選擇全部並且沒有項目,在knockoutjs中
請問你們能幫我解決這個問題嗎?
謝謝
我你的結構有點。我不認爲people
和checkedPeople
真的是淘汰賽。如果你確實想要checkedPeople,它可能只是一個只讀的計算可觀察值。
我給最初的人添加了一個IsChecked
字段(都是假的)。然後我改變了複選框以映射到那個。最後,我使用arrayForEach
單選按鈕更改所有IsChecked字段。
現在,單選按鈕GUI並不是很直觀。你可以採取兩種appraoches:
allChecked
標誌模型。這意味着即使您逐個選中複選框,它們也會自動檢查。我也拿出你的日誌。我假設這是調試,但如果需要,您可以重新添加它。
你好做到了有,感謝您的幫助,但是,問題是我正在做這個服務器端分頁,我需要允許用戶選擇所有項目(這不僅僅是客戶端的人),因此我持有檢查在一個ID陣列中的人) – tuanvt 2012-03-19 09:23:39
UPDATED 所以你想做一個「checkAll(本頁)」的實現。
爲了保持對從一個分頁事件到下一個分頁事件的檢查更改,我會在分頁事件期間將網格中當前檢查的項目推送到服務器,或者將檢查/取消選中操作保持回DB右側在每個事件之後。它是一種廉價的電話,你是不是在失去了檢查的項目的風險,因爲用戶打backspace key accidentally.
不發送支票在每個分頁操作的服務器...
然後,重要的是,在每個頁面事件中,您需要將檢查重新應用到顯示的項目的網格上。
最後,爲了避免檢查標記代表它們的檢查狀態(您單擊全選,而您沒有看到它們被檢查)。這是因爲你有checked:$parent.checkedPeople
。這將永遠不會工作,因爲checkedPeople是一個數組,而不是布爾值。我改變了這個功能,詢問這個人的身份證是否在檢查人民陣列
無論如何..它是:http://jsfiddle.net/VcZBf/24/
它是一個粗略的概念。
WITH發送當前檢查服務器上的每個分頁操作
更平滑。從以前的答案
參考: http://en.wikipedia.org/wiki/Principle_of_least_astonishment
爲什麼這樣,怪異...'viewModel.checkedPeople(新的Array());' – elclanrs 2012-03-19 05:09:40
是我不好,我只是無意中與我的JavaScript智能感知 – tuanvt 2012-03-19 09:26:16