此爲第一期修改,後期也適配了其餘組件,更多查看我得文章
element-ui組件的tree樹形控件修改源碼改成iview組件node
修改了element-ui源碼,把源碼裏面的tree模塊提取出來
而後修改element自帶checkbox等組件爲iview的checkbox,而且兼容方法
最後修改element樣式,改成iview風格,本身也添加了一些樣式git
新的tree組件能夠說是element的邏輯,iview的風格github
<template> <div @click.stop="handleClick" v-show="node.visible"> <div class="chu-tree-node__content" :style="{ 'padding-left': (node.level - 1) * tree.indent + 'px' }"> <span :class="arrowClasses" @click.stop="handleExpandIconClick"> <Icon v-if="!node.isLeaf" type="arrow-right-b"></Icon> </span> <Checkbox v-if="showCheckbox" :value="node.checked" :indeterminate="node.indeterminate" :disabled="!!node.disabled" @click.native.stop @on-change="handleCheckChange"></Checkbox> <span v-if="node.loading" class="ivu-load-loop"> </span> <node-content :node="node"></node-content> </div> <collapse-transition> <div v-show="expanded"> <el-tree-node :render-content="renderContent" v-for="child in node.childNodes" :key="getNodeKey(child)" :node="child" @node-expand="handleChildNodeExpand"> </el-tree-node> </div> </collapse-transition> </div> </template>
修改handleCheckChange,由於iview的checkbox組件邏輯不一樣,函數的返回不同,須要兼容npm
handleCheckChange(ev) { this.node.setChecked(ev, !this.tree.checkStrictly); },
提取完成後的項目結構,以及封裝成npm插件element-ui
必須安裝iviewiview
樣式風格所有替換成了ivew函數
功能所有按照element-ui原先同樣oop
npm i chu-tree-iviewui
import chuView from 'chu-tree-iview' import iview from 'iview' Vue.use(iview) Vue.use(chuView) <chu-tree></chu-tree>
使用文檔跟element-ui如出一轍this
http://element-cn.eleme.io/#/...
https://github.com/CHU295/chu...
有問題聯繫做者