• 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
          }
        }
  • 相关阅读:
    shell log
    Python:列出列表中所有元素的组合可能
    scrapy 停止爬虫
    shell split log by data
    mitmproxy 配置
    插件reres的使用,替换网站的js文件
    解决小米Note adb调试无法发现设备
    md5 计算文件一致性
    【Frida Hook 学习记录】Frida Hook Android 常用方法
    监控神器普罗米修斯Prometheus安装配置
  • 原文地址:https://www.cnblogs.com/afafaa/p/12592484.html
Copyright © 2020-2023  润新知