Skip to content

el-select-tree ​

ElementUI's el-select combined with el-tree.

  • 2.1 Support custom menu header/footer.
  • 2.1 check-on-click-node is available with show-checkobx, default is false. Broken Change
  • 2.1 expand-on-click-node is available, default is true.
  • 2.1 Support virtual list.
  • 2.0 Comprehensively improve the utilization rate of original parts.

Installation ​

shell
npm install --save el-select-tree
ts
import Vue from "vue";
import ElSelectTree from "el-select-tree";

Vue.use(ElSelectTree);

If your project does not depend on element-ui, you need to introduce additional component packages.

ts
import "el-select-tree/lib/element-ui";
// If the project is loaded on demand, modify babel.config.js according to the official configuration.
// The complete style file is imported here.
// https://element.eleme.io/#/zh-CN/component/quickstart#an-xu-yin-ru
import "element-ui/lib/theme-chalk/index.css";

Usage ​

check-strictly ​

Any node can be selected, and the normal mode can only select leaf nodes.

Click me to show code

filterable ​

Support for filtering tree nodes.

Click me to show code

multiple ​

Multiple selection.

Click me to show code

props ​

Custom tree data props.

Click me to show code

lazy-load ​

Lazy load tree nodes.

Click me to show code

lazy-load-cache-data ​

Use cached data to display unloaded node names.

Click me to show code

slot ​

Custom option content.

Click me to show code

slots-menu 2.1-beta ​

Custom menu header/footer.

Click me to show code

render ​

Custom option content use render.

Click me to show code

with-form ​

Use with el-form.

Click me to show code

virtual Experimental 2.1-beta ​

Use virtual list. ElSelectTreeVirtual is optional, need register first.

shell
npm i el-select-tree@2.1
ts
import { ElSelectTreeVirtual } from "el-select-tree";

export default {
  components: {
    ElSelectTreeVirtual,
  },
};

WARNING

Use banReactive when the amount of data is large. Otherwise, performance will be slower.

ts
const empty = reactive({});
const banReactive = (obj) => {
  // skip vue reactive
  obj.__ob__ = empty.__ob__;
  return obj;
};

export default {
  data() {
    return {
      data: banReactive(
        Array(100000)
          .fill("")
          .map((item, index) => ({ value: index, label: index + "" }))
      ),
    };
  },
};

Props ​

el-select-tree inherits el-tree and el-select all props/methods/events/slots.

So no repeat here.

propsmethodseventsslots
el-selectel-selectel-selectel-select
el-treeel-treeel-treeel-tree

Own Props ​

NameTypeDesc
cache-dataArrayThe cache data for lazy load tree nodes, it can resolved correct label with unloaded nodes.

Own Slots 2.1-beta ​

NameDesc
headermenu header
footermenu footer

Last updated: