如何在vue中隐藏侧边栏

时间:2018-04-13 12:55:24

标签: vue.js core-ui

伙计们,我是Vue的新手并采用了coreui管理面板来开发一些字体vue,但现在我遇到了这个问题,这是nav.js文件

   export default { 
          items: [
                   {
                   name: 'Product',
                   url: '/product',
                   icon: 'fa fa-cart-arrow-down',
                         children: [
                                      {
                                       name: 'Addproduct',
                                       url: '/product/Addproduct',
                                     },
                                       {
                                        name: 'Listproduct',
                                        url: '/product/Listproduct',
                                     }
                             ]
                    },

             ]
     }

主要容器

            <template>
                  <div class="app">     
                            <div class="app-body">
                               <Sidebar :navItems="nav"/>
                                    <main class="main">
                                           <div class="container-fluid">
                                              <router-view></router-view>
                                          </div>
                                    </main>
                             <AppAside/>
                        </div>
              </div>
       </template>

      <script>
             import nav from '../_nav'
             export default {
             name: 'full',
            components: {
                    Sidebar,

                          },
          data () {
                  return {
                nav: nav.items
            }
         },
        computed: {
            name () {
            return this.$route.name
        },
           list () {
            return this.$route.matched
                    }
                }
         }
    </script>

这是我的侧栏

                <template v-for="(item, index) in navItems">
                        <template v-if="item.title">
                                <SidebarNavTitle :name="item.name" :classes="item.class" :wrapper="item.wrapper"/>
                      </template>


                      <template v-else>
                          <template v-if="item.children">
                     </template>
                <template v-else>
                      <SidebarNavItem :classes="item.class">
                         <SidebarNavLink :name="item.name" :url="item.url" :icon="item.icon" :badge="item.badge" :variant="item.variant"/>
                   </SidebarNavItem>
               </template>
           </template>
    </template>
现在,如果用户登录并转到仪表板,那么我现在可以在我的浏览器本地存储中添加addproduct,然后我会看到浏览器应用程序中存在哪个url名称,如果存在则显示其他现在忽略我的问题是我如何申请条件如addproduct = addprodcut这个可见的其他隐藏

1 个答案:

答案 0 :(得分:0)

你可以在挂钩中使用一个方法,它可以从localstorage中获取数据并检查它是否存在于url中。然后将其分配给主要组件中的变量,该变量切换侧栏。像下面这样的东西应该有效:

<template>
              <div class="app">     
                        <div class="app-body">
                           <Sidebar :navItems="nav" v-if="showSidebar" />
                                <main class="main">
                                       <div class="container-fluid">
                                          <router-view></router-view>
                                      </div>
                                </main>
                         <AppAside/>
                    </div>
          </div>
   </template>

  <script>
         import nav from '../_nav'
         export default {
         name: 'full',
        components: {
                Sidebar,

                      },
      data () {
              return {
            nav: nav.items,
            showSidebar: false
        }
     },
    mounted () {
        this.checkSidebarVisibility()
    },
    methods: {
        checkSidebarVisibility: function() {
                    const inLocal = window.localStorage.getItems('your_item');
                   const inUrl = window.location.toString();
                   // check if inurl inside inLocal
                   if (inUrl is in inLocal) {
                     this.showSidebar = true;
                   } else {
                     this.showSidebar = false; 
                   }
                 } 
    },
    computed: {
        name () {
        return this.$route.name
    },
       list () {
        return this.$route.matched
                }
            }
     }
</script>