c5_labsci/web/docs/components/treemenu.js

75 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const CiyTreemenu = {
name: 'ciy-treemenu',
template: `
<div class="treemenu">
<ul>
<li v-for="item in treeData" :key="item.id">
<span v-if="item.children" @click="item.expanded = !item.expanded" style="font-weight:bold;">{{ item.name }}</span>
<span v-else @click="selectNode(item)" :style="{color:item.select?'#0068ac':''}">{{ item.name }}</span>
<div v-if="item.children && item.expanded" class="tree-children">
<ciy-treemenu :tree-data="item.children" @node-selected="selectNode"></ciy-treemenu>
</div>
</li>
</ul>
</div>
`,
props: {
treeData: {
type: Array,
required: true,
default: () => []
}
},
beforeCreate() {
console.log('beforeCreate: 实例初始化之后,数据观测和事件配置之前被调用');
},
created() {
console.log('created: 实例创建完成后被调用,已完成数据观测、属性和方法的运算',this.treeData);
},
beforeMount() {
console.log('beforeMount: 挂载开始之前被调用相关的render函数首次被调用');
},
mounted() {
console.log('mounted: 实例挂载完成后调用此时DOM已经渲染', this.$el);
},
beforeUpdate() {
console.log('beforeUpdate: 数据更新时调用发生在虚拟DOM重新渲染和打补丁之前');
},
updated() {
console.log('updated: 数据更改导致的虚拟DOM重新渲染和打补丁后调用');
},
beforeUnmount() {
console.log('beforeUnmount: 实例销毁之前调用,此时实例仍然完全可用');
},
unmounted() {
console.log('unmounted: 实例销毁后调用,所有指令都已解绑,所有事件监听器都已移除');
},
activated() {
console.log('activated: 被keep-alive缓存的组件激活时调用');
},
deactivated() {
console.log('deactivated: 被keep-alive缓存的组件停用时调用');
},
errorCaptured(err, instance, info) {
console.log('errorCaptured: 捕获一个来自后代组件的错误时被调用');
console.error('Error:', err);
console.log('Vue instance:', instance);
console.log('Error info:', info);
// 可以阻止错误继续向上传播
return false;
},
renderTracked({ key, target, type }) {
// console.log('renderTracked: 跟踪虚拟DOM重新渲染时调用');
// console.log(`操作类型: ${type}, 目标: ${target}, 键: ${key}`);
},
renderTriggered({ key, target, type }) {
// console.log('renderTriggered: 虚拟DOM重新渲染被触发时调用');
// console.log(`操作类型: ${type}, 目标: ${target}, 键: ${key}`);
},
methods: {
selectNode(node) {
this.$emit('node-selected', node);
}
}
};