index.vue 845 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <template>
  2. <component :is="menuComponent" v-if="!routerInfo.hidden" :router-info="routerInfo">
  3. <template v-if="routerInfo.children&&routerInfo.children.length">
  4. <AsideComponent v-for="item in routerInfo.children" :key="item.name" :router-info="item" />
  5. </template>
  6. </component>
  7. </template>
  8. <script>
  9. import MenuItem from './menuItem'
  10. import AsyncSubmenu from './asyncSubmenu'
  11. export default {
  12. name: 'AsideComponent',
  13. components: {
  14. MenuItem,
  15. AsyncSubmenu
  16. },
  17. props: {
  18. routerInfo: {
  19. default: function() {
  20. return null
  21. },
  22. type: Object
  23. }
  24. },
  25. computed: {
  26. menuComponent() {
  27. if (this.routerInfo.children && this.routerInfo.children.filter(item => !item.hidden).length) {
  28. return 'AsyncSubmenu'
  29. } else {
  30. return 'MenuItem'
  31. }
  32. }
  33. }
  34. }
  35. </script>