好幾個 ZK 元件都支援以一個 model 物件為基礎來繪製其內容,例如 Listbox, Grid, Tree, Tabbox, Combobox。這種情況下,必須要以控制該 model 來控制元件的 rendering、選擇模式 (single or multiple choice)、被選定的項目 (selected items),而不是直接透過元件的 API 。
以下是常見的例子:
- 要將
Listbox
設定成多選,應該要用ListModel.setMultiple(true)
而不是Listbox.setMultiple(true)
。 - 要刪掉某一個
Listitem
,應該是刪掉ListModel
中對應的資料物件,而不是直接呼叫Listitem.detach()
。 - 點選
Tabbox
\Tab
上的關閉按鈕時,不會關掉Tab
,因為其移除是要由 Model 控制。 - 使用
TreeModel
時,要展開 Tree 上某個節點,要透過TreeOpenableModel.addOpenPath()
(orDefaultTreeModel.()
) 而不是Treeitem.setOpen()
什麼時候可以直接呼叫元件 API 來控制呢?就是你沒有給 Model 物件的時候。
留言