This commit is contained in:
zhigang.li 2018-05-30 18:40:43 +08:00
parent cbff5e3641
commit e549c92b1d
2 changed files with 77 additions and 11 deletions

View file

@ -50,8 +50,53 @@
<menu-item v-else :name="`${item.name}`" :key="`menu-${item.name}`">{{ item.name }}</menu-item> <menu-item v-else :name="`${item.name}`" :key="`menu-${item.name}`">{{ item.name }}</menu-item>
</template> </template>
</Menu> </Menu>
<Button @click="setOpenNames">修改展开数组</Button>
<Button @click="addNewItem">添加菜单项</Button> --> <Button @click="addNewItem">添加菜单项</Button> -->
<Button @click="changeActive">修改激活项</Button>
<Button @click="setOpenNames">修改展开数组</Button>
<Menu mode="horizontal" theme="light" :active-name="activeName" @on-open-change="hc">
<MenuItem name="1">
<Icon type="ios-paper"></Icon>
内容管理
</MenuItem>
<MenuItem name="2">
<Icon type="ios-people"></Icon>
用户管理
</MenuItem>
<Submenu name="3">
<template slot="title">
<Icon type="stats-bars"></Icon>
统计分析
</template>
<MenuGroup title="使用">
<MenuItem name="3-1">新增和启动</MenuItem>
<MenuItem name="3-2">活跃分析</MenuItem>
<MenuItem name="3-3">时段分析</MenuItem>
</MenuGroup>
<MenuGroup title="留存">
<MenuItem name="3-4">用户留存</MenuItem>
<MenuItem name="3-5">流失用户</MenuItem>
</MenuGroup>
</Submenu>
<Submenu name="4">
<template slot="title">
<Icon type="stats-bars"></Icon>
统计分析2
</template>
<MenuGroup title="使用2">
<MenuItem name="4-1">新增和启动2</MenuItem>
<MenuItem name="4-2">活跃分析2</MenuItem>
<MenuItem name="4-3">时段分析2</MenuItem>
</MenuGroup>
<MenuGroup title="留存2">
<MenuItem name="4-4">用户留存2</MenuItem>
<MenuItem name="4-5">流失用户2</MenuItem>
</MenuGroup>
</Submenu>
<MenuItem name="5">
<Icon type="settings"></Icon>
综合设置
</MenuItem>
</Menu>
</div> </div>
</template> </template>
<script> <script>
@ -129,7 +174,8 @@ import custemMenuItem from './custem-menu-item.vue'
} }
] ]
} }
] ],
activeName: '1'
}; };
}, },
methods: { methods: {
@ -151,6 +197,12 @@ import custemMenuItem from './custem-menu-item.vue'
} }
] ]
}) })
},
changeActive () {
this.activeName = String(Number(this.activeName) + 1)
},
hc (data) {
console.log(data);
} }
} }
} }

View file

@ -80,23 +80,37 @@
let names = [...this.openedNames]; let names = [...this.openedNames];
const index = names.indexOf(name); const index = names.indexOf(name);
if (index >= 0) { if (index >= 0) {
names.splice(index, 1); let currentSubmenu = null;
findComponentsDownward(this, 'Submenu').forEach(item => {
if (item.name === name) {
currentSubmenu = item;
item.opened = false;
}
});
findComponentsDownward(currentSubmenu, 'Submenu').forEach(item => {
item.opened = false;
});
} else { } else {
if (this.accordion) { if (this.mode === 'horizontal' && this.accordion) {
let currentSubmenu = null; let currentSubmenu = null;
names = [];
findComponentsDownward(this, 'Submenu').forEach(item => { findComponentsDownward(this, 'Submenu').forEach(item => {
if (item.name === name) currentSubmenu = item; if (item.name === name) {
currentSubmenu = item;
item.opened = true;
}
}); });
findComponentsUpward(currentSubmenu, 'Submenu').forEach(item => { findComponentsUpward(currentSubmenu, 'Submenu').forEach(item => {
names.push(item.name); item.opened = true;
});
} else {
findComponentsDownward(this, 'Submenu').forEach(item => {
if (item.name === name) item.opened = true;
}); });
} }
names.push(name);
} }
this.openedNames = names; let openedNames = findComponentsDownward(this, 'Submenu').filter(item => item.opened).map(item => item.name);
this.updateOpened(); this.openedNames = [...openedNames];
this.$emit('on-open-change', this.openedNames); this.$emit('on-open-change', openedNames);
}, },
updateOpened () { updateOpened () {
const items = findComponentsDownward(this, 'Submenu'); const items = findComponentsDownward(this, 'Submenu');