iView中的樹組件有復選框可以多選,但是目前還沒有提供單選框的模式,不顯示復選框可以提供高亮單選的模式,但是再次點擊就被取消了,沒有實現真正的單選;
tree 的屬性配置中 multiple 是否支持多選,是在不顯示復選框的時候生效的,不能控制復選框支不支持多選;
實現單選功能中用到了:
:show-checkbox="true" // 是否顯示復選框
:check-strictly="true" // 顯示復選框的前提下,是否讓父子節點不聯動
:check-directly="true" // 在顯示復選框的前提下,讓節點的選中觸發復選框的選中
@on-check-change="treeChange" // 復選框被選中的時候觸發,可能是點擊復選框的時候被選中,也可能是點擊節點的時候被選中;返回 當前已勾選節點的數組、當前項
使用 getSelectedNodes() 獲取被選中的節點數組,getSelectedNodes()[0] 獲得被選中節點的數據
視圖、邏輯、樣式 如下:
1 <template> 2 <Tree 3 ref="orgTree" 4 :data="orgTree" 5 :show-checkbox="true" 6 :check-strictly="true" 7 :check-directly="true" 8 @on-check-change="treeChange" 9 ></Tree> 10 </template> 11 12 <script> 13 ... 14 methods:{ 15 // 樹復選框發生改變--只能有一個被選中 16 treeChange(arr, obj) { 17 // 清空所有已選中的 18 arr.forEach(item => { 19 item.checked = false; 20 }); 21 // 只選中最后一次選中的 22 obj.checked = true; 23 } 24 } 25 </script> 26 27 <style> 28 /* 讓方形復選框變成圓形單選框樣式,最好在樹組件外套一個父盒子,在樣式前加父級選擇器,以免影響其他樹組件*/ 29 .ivu-checkbox-inner { 30 border-radius: 50%; 31 } 32 </style>
寫的比較簡單,可能還有不完善的地方,還請各位大佬批評指正