<style>
  .leaf {
    width: 20px;
    background: #ddd;
  }

  .folder {
    width: 20px;
    background: #888;
  }
</style>

<script>
  import Vue from 'vue';

  var data = [{
    label: 'bb',
    children: [{
      label: 'b1'
    }]
  }, {
    label: 'cc',
    children: [{
      label: 'cc1'
    }, {
      label: 'cc2'
    }]
  }];

  var regions = [{
    'name': 'region1'
  }, {
    'name': 'region2'
  }];

  var count = 1;

  var props = {
    label: 'name',
    children: 'zones',
    icon(data, node) {
      if (node.isLeaf) {
        return 'el-icon-close';
      }
      return 'el-icon-search';
    }
  };

  var defaultProps = {
    children: 'children',
    label: 'label'
  };

  export default {
    methods: {
      getCheckedNodes() {
        console.log(this.$refs.tree.getCheckedNodes(true));
      },

      loadNode(node, resolve) {
        if (node.level === -1) {
          return resolve([{ name: 'Root1' }, { name: 'Root2' }]);
        }
        var hasChild = Math.random() > 0.5;
        if (node.level > 4) return resolve([]);

        setTimeout(function() {
          var data;
          if (hasChild) {
            data = [{
              name: 'zone' + count++
            }, {
              name: 'zone' + count++
            }];
          } else {
            data = [];
          }

          resolve(data);
        }, 500);
      }
    },

    data() {
      return {
        data,
        regions,
        defaultProps,
        props
      };
    }
  };
</script>

## Basic

<el-tree :data="data" :props="defaultProps"></el-tree>

## Have Checkbox

<el-tree :data="regions" :props="props" :load="loadNode" lazy show-checkbox></el-tree>