element/packages/tree/src/tree.vue

122 lines
2.6 KiB
Vue
Raw Normal View History

2016-07-27 06:15:02 +00:00
<template>
<div class="el-tree" :class="{ 'el-tree--highlight-current': highlightCurrent }">
<el-tree-node
v-for="child in tree.root.childNodes"
:node="child"
:props="props"
:render-content="renderContent">
</el-tree-node>
<div class="el-tree__empty-block" v-if="!tree.root.childNodes || tree.root.childNodes.length === 0">
<span class="el-tree__empty-text">{{ emptyText }}</span>
</div>
2016-07-27 06:15:02 +00:00
</div>
</template>
<script type="text/ecmascript-6">
import Tree from './model/tree';
import { t } from 'element-ui/src/locale';
2016-07-27 06:15:02 +00:00
export default {
name: 'el-tree',
props: {
data: {
type: Array
},
emptyText: {
type: String,
2016-11-17 07:37:04 +00:00
default() {
return t('el.tree.emptyText');
}
},
nodeKey: String,
checkStrictly: Boolean,
defaultExpandAll: Boolean,
autoExpandParent: {
type: Boolean,
default: true
},
defaultCheckedKeys: Array,
defaultExpandedKeys: Array,
renderContent: Function,
2016-07-27 06:15:02 +00:00
showCheckbox: {
type: Boolean,
default: false
},
props: {
default() {
return {
children: 'children',
label: 'label',
icon: 'icon'
};
}
},
lazy: {
type: Boolean,
default: false
},
highlightCurrent: Boolean,
load: Function
2016-07-27 06:15:02 +00:00
},
created() {
this.$isTree = true;
this.tree = new Tree({
key: this.nodeKey,
2016-07-27 06:15:02 +00:00
data: this.data,
lazy: this.lazy,
props: this.props,
load: this.load,
checkStrictly: this.checkStrictly,
defaultCheckedKeys: this.defaultCheckedKeys,
defaultExpandedKeys: this.defaultExpandedKeys,
autoExpandParent: this.autoExpandParent,
defaultExpandAll: this.defaultExpandAll
2016-07-27 06:15:02 +00:00
});
},
data() {
return {
tree: {},
currentNode: null
2016-07-27 06:15:02 +00:00
};
},
components: {
ElTreeNode: require('./tree-node.vue')
},
computed: {
children: {
set(value) {
this.data = value;
},
get() {
return this.data;
}
}
},
2016-10-08 05:58:31 +00:00
watch: {
data(newVal) {
this.tree.setData(newVal);
},
defaultCheckedKeys(newVal) {
this.tree.setDefaultCheckedKey(newVal);
2016-10-08 05:58:31 +00:00
}
},
2016-07-27 06:15:02 +00:00
methods: {
getCheckedNodes(leafOnly) {
return this.tree.getCheckedNodes(leafOnly);
},
setCheckedNodes(nodes) {
if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedNodes');
this.tree.setCheckedNodes(nodes);
2016-07-27 06:15:02 +00:00
}
}
};
</script>