vue.js element-ui組件改iview 第一期 tree樹形控件

此爲第一期修改,後期也適配了其餘組件,更多查看我得文章
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

clipboard.png

使用方法

必須安裝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/#/...

  • github地址

https://github.com/CHU295/chu...

有問題聯繫做者

相關文章
相關標籤/搜索