zoukankan      html  css  js  c++  java
  • vue中使用动态挂载和懒加载,实现点击导航栏菜单弹出不同弹框

    点击不同导航栏下的二级菜单,页面不变,弹出不同弹框,可以使用懒加载+动态组件挂载实现。

    懒加载是为了按需引入,不用一次性将所有弹框引入,这样做可以提高性能;动态组件挂载是为了方便弹框切换。

    具体实现如下:

    HTML部分

    <ul @click="showDown = false">
          <!-- 一级菜单 -->
          <li
            v-for="(item, index) in name"
            :key="index"
            @click="addClass(index)"
            :class="{ bgColor: index == current }"
          >
            <a href="javascript:;" ref="ch">{{ item.title }}</a>
            <!-- 二级菜单 -->
            <div
              class="down"
              ref="btn"
              v-show="current === index ? true : false"
              @click.stop="showDown = !showDown"
            >
              <p
                v-for="(itemq, i) in item.down"
                style="cursor:pointer"
                :key="i"
                :class="{ downColor: i == now }"
                @click="big(i, index)"
              >
                {{ itemq.title }}
              </p>
            </div>
          </li>
        </ul>
    <!-- 弹框 -->
        <component message="我是子" ref="box" v-bind:is="whichcomp"></component>

    JavaScript引入部分,应在data里

     name: [
            {
              title: '一级菜单1',
              down: [
                { title: '二级菜单1', component: () => import('./1.vue') },
                { title: '二级菜单2', component: () => import('./2.vue') }, 
                { title: '二级菜单3', component: () => import('./3.vue') },
                { title: '二级菜单4', component: () => import('./4.vue') }
              ]
            }]

    JavaScript功能部分

    big (i, index) {
          this.now = i
          this.whichcomp = this.name[index].down[i].component
          if (typeof (this.$refs.box) !== 'undefined') {
            this.$refs.box.show = true
          }
        }
  • 相关阅读:
    python 注释
    python元祖
    浅谈单片机应用程序架构----本质是定时调用
    原子哥的STM32视频,我发现他们都看不懂原子哥里面按键扫描程序
    指针函数与函数指针的区别
    基于不带字库的图形LCD模块汉字显示解决方案
    GB2312编码
    C语言可变参简介
    kEIL5环境下移置STM32库文件
    nodejs表单验证
  • 原文地址:https://www.cnblogs.com/afafaa/p/12592484.html
Copyright © 2011-2022 走看看