目前項目中用的是VUE+Element,中間有個樹結構展示的分級分組數據,初步實現了數據加載/點擊事件的完成。
1 <el-tree 2 :props="props" 3 :data="treeData" 4 ref="tree" 5 :load="loadNode" 6 :filter-node-method="filterNode" 7 node-key="id" 8 :default-expanded-keys="['100']" 9 @current-change="handleNodeClick" 10 lazy 11 ></el-tree>
js代碼如下
1 loadNode(node, resolve) { 2 if (node.level === 0) { 3 //getData:獲取數據接口 4 getData().then(function(res) { 5 if (res && res.data) { 6 let treeData = res.data; 7 return resolve(treeData); 8 } 9 }); 10 } else { 11 if (node.data && node.data.children && node.data.children.length > 0) { 12 return resolve(node.data.children); 13 } else if ( 14 node.data && 15 node.data.children && 16 node.data.children.length === 0 17 ) { 18 //getDataList:獲取最后一級數據的接口 19 getDataList({ id: node.data.id }).then(function(res) { 20 res.data.forEach(data => { 21 data.leaf = true; 22 }); 23 return resolve(res.data); 24 }); 25 } 26 } 27 }
但是,項目經理說,1.鼠標移入要顯示全部內容 2.如果有編碼的數據要高亮顯示。
如果是標簽,我知道肯定說很簡單1加title,2判斷加不同類名
可是它是樹啊,數據都在treeData里面,官網沒有案例,我不會了。。。
然后上網查資料,我又會了!
解決方案如下:
1 <el-tree 2 :props="props" 3 :data="treeData" 4 ref="tree" 5 :load="loadNode" 6 :filter-node-method="filterNode" 7 node-key="id" 8 :default-expanded-keys="['100']" 9 @current-change="handleNodeClick" 10 lazy 11 > 12 <span class="span-ellipsis" slot-scope="{ node, data }"> 13 <span :title="node.label" :class="node.data.code ? 'node1' : 'node2'">{{ 14 node.label 15 }}</span> 16 </span> 17 </el-tree>