как скрыть боковую панель в vue

ребята, я новичок в 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 это видимое еще скрыть


person Community    schedule 13.04.2018    source источник


Ответы (1)


У вас может быть метод в смонтированном хуке, который может извлекать данные из локального хранилища и проверять, присутствует ли он в 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>
person Gaurav    schedule 13.04.2018
comment
условие выполняется, но на боковой панели ничего не отображается - person ; 13.04.2018