<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Vue3 動態子頁面和菜單欄同步

      動態子頁面

      <router-view></router-view>顯示子頁面的內容

      main.vue
      <template>
        <a-layout id="components-layout-demo-top-side">
          <the-header-view></the-header-view>
          <a-layout style="padding: 24px 0; background: #fff">
            <the-sider-view></the-sider-view>
            <a-layout-content :style="{ padding: '0 24px', minHeight: '280px' }">
      <!--        <p>會員總數: {{ count }}</p>-->
      <!--        <button @click="handleCount">Refresh Count</button>-->
              <router-view></router-view>
            </a-layout-content>
          </a-layout>
      <!--    <a-layout-content style="padding: 0 50px">-->
      <!--      <a-breadcrumb style="margin: 16px 0">-->
      <!--        <a-breadcrumb-item>Home</a-breadcrumb-item>-->
      <!--        <a-breadcrumb-item>List</a-breadcrumb-item>-->
      <!--        <a-breadcrumb-item>App</a-breadcrumb-item>-->
      <!--      </a-breadcrumb>-->
      <!--      -->
      <!--    </a-layout-content>-->
      <!--    <a-layout-footer style="text-align: center">-->
      <!--      Ant Design ?2018 Created by Ant UED-->
      <!--    </a-layout-footer>-->
        </a-layout>
      </template>
      
      <script>
      import { defineComponent } from 'vue';
      import TheHeaderView from "@/components/the-header";
      import TheSiderView from "@/components/the-sider";
      
      export default defineComponent({
        components: {
          TheSiderView,
          TheHeaderView,
        },
        setup() {
          return {
          };
        },
      });
      </script>
      
      <style>
      #components-layout-demo-top-side .logo {
        float: left;
        width: 120px;
        height: 31px;
        margin: 16px 24px 16px 0;
        background: rgba(255, 255, 255, 0.3);
      }
      
      .ant-row-rtl #components-layout-demo-top-side .logo {
        float: right;
        margin: 16px 0 16px 24px;
      }
      
      .site-layout-background {
        background: #fff;
      }
      </style>
      
      

      實現效果:
      image
      其中header和sider是先前封裝的組件
      router中顯示的就是子頁面http://localhost:9001/welcome的內容

      給header和sider組件添加menu

      menu
      <a-menu-item key="/welcome">
              <router-link to="/welcome">
                <coffee-outlined /> &nbsp; 歡迎
              </router-link>
            </a-menu-item>
            <a-menu-item key="/passenger">
              <router-link to="/passenger">
                <user-outlined /> &nbsp; 乘車人管理
              </router-link>
            </a-menu-item>
      
      header
      <template>
        <a-layout-header class="header">
          <div class="logo" />
          <div style="float: right; color: white;">
            您好:{{member.mobile}} &nbsp;&nbsp;
            <router-link to="/login" style="color: white;">
              退出登錄
            </router-link>
          </div>
          <a-menu
              v-model:selectedKeys="selectedKeys1"
              theme="dark"
              mode="horizontal"
              :style="{ lineHeight: '64px' }"
          >
            <a-menu-item key="/welcome">
              <router-link to="/welcome">
                <coffee-outlined /> &nbsp; 歡迎
              </router-link>
            </a-menu-item>
            <a-menu-item key="/passenger">
              <router-link to="/passenger">
                <user-outlined /> &nbsp; 乘車人管理
              </router-link>
            </a-menu-item>
          </a-menu>
      <!--    <div>{{member.mobile}}</div>-->
        </a-layout-header>
      </template>
      
      <script>
      import {defineComponent, ref} from 'vue';
      import store from "@/store";
      
      
      export default defineComponent({
        name: "the-header-view",
        setup() {
          let member = store.state.member;
          return {
            selectedKeys1: ref(['2']),
            member
          };
        },
      });
      </script>
      
      <!-- Add "scoped" attribute to limit CSS to this component only -->
      <style scoped>
      
      </style>
      
      
      sider
      <template>
        <a-layout-sider width="200" style="background: #fff">
          <a-menu
              v-model:selectedKeys="selectedKeys2"
              v-model:openKeys="openKeys"
              mode="inline"
              style="height: 100%"
          >
            <a-menu-item key="/welcome">
              <router-link to="/welcome">
                <coffee-outlined /> &nbsp; 歡迎
              </router-link>
            </a-menu-item>
            <a-menu-item key="/passenger">
              <router-link to="/passenger">
                <user-outlined /> &nbsp; 乘車人管理
              </router-link>
            </a-menu-item>
            <a-sub-menu key="sub1">
              <template #title>
                      <span>
                        <user-outlined />
                        subnav 11
                      </span>
              </template>
      
            </a-sub-menu>
            <a-sub-menu key="sub2">
              <template #title>
                      <span>
                        <laptop-outlined />
                        subnav 2
                      </span>
              </template>
              <a-menu-item key="5">option5</a-menu-item>
              <a-menu-item key="6">option6</a-menu-item>
              <a-menu-item key="7">option7</a-menu-item>
              <a-menu-item key="8">option8</a-menu-item>
            </a-sub-menu>
            <a-sub-menu key="sub3">
              <template #title>
                      <span>
                        <notification-outlined />
                        subnav 3
                      </span>
              </template>
              <a-menu-item key="9">option9</a-menu-item>
              <a-menu-item key="10">option10</a-menu-item>
              <a-menu-item key="11">option11</a-menu-item>
              <a-menu-item key="12">option12</a-menu-item>
            </a-sub-menu>
          </a-menu>
        </a-layout-sider>
      </template>
      
      <script>
      import {defineComponent, ref} from 'vue';
      
      
      export default defineComponent({
        name: "the-sider-view",
        setup() {
      
          return {
            selectedKeys2: ref(['1']),
            openKeys:ref(['sub1'])
          };
        },
      });
      </script>
      
      <!-- Add "scoped" attribute to limit CSS to this component only -->
      <style scoped>
      
      </style>
      
      

      實現效果:
      image
      image
      但是,這時的header和sider的菜單顯示并不同步,還會出現菜單與內容不符的問題
      image

      為解決這個問題,在header和sider中分別編寫watch,監視地址的router地址的變化

      watch
      const selectedKeys = ref([]);
      
          watch(() => router.currentRoute.value.path, (newValue) => {
            console.log('watch', newValue);
            selectedKeys.value = [];
            selectedKeys.value.push(newValue);
          }, {immediate: true});
      
      header
      <template>
        <a-layout-header class="header">
          <div class="logo" />
          <div style="float: right; color: white;">
            您好:{{member.mobile}} &nbsp;&nbsp;
            <router-link to="/login" style="color: white;">
              退出登錄
            </router-link>
          </div>
          <a-menu
              v-model:selectedKeys="selectedKeys"
              theme="dark"
              mode="horizontal"
              :style="{ lineHeight: '64px' }"
          >
            <a-menu-item key="/welcome">
              <router-link to="/welcome">
                <coffee-outlined /> &nbsp; 歡迎
              </router-link>
            </a-menu-item>
            <a-menu-item key="/passenger">
              <router-link to="/passenger">
                <user-outlined /> &nbsp; 乘車人管理
              </router-link>
            </a-menu-item>
          </a-menu>
      <!--    <div>{{member.mobile}}</div>-->
        </a-layout-header>
      </template>
      
      <script>
      import {defineComponent, ref, watch} from 'vue';
      import store from "@/store";
      import router from "@/router";
      
      export default defineComponent({
        name: "the-header-view",
        setup() {
          let member = store.state.member;
          const selectedKeys = ref([]);
      
          watch(() => router.currentRoute.value.path, (newValue) => {
            console.log('watch', newValue);
            selectedKeys.value = [];
            selectedKeys.value.push(newValue);
          }, {immediate: true});
      
          return {
            selectedKeys,
            member
          };
        },
      });
      </script>
      
      <!-- Add "scoped" attribute to limit CSS to this component only -->
      <style scoped>
      
      </style>
      
      
      sider
      <template>
        <a-layout-sider width="200" style="background: #fff">
          <a-menu
              v-model:selectedKeys="selectedKeys"
              v-model:openKeys="openKeys"
              mode="inline"
              style="height: 100%"
          >
            <a-menu-item key="/welcome">
              <router-link to="/welcome">
                <coffee-outlined /> &nbsp; 歡迎
              </router-link>
            </a-menu-item>
            <a-menu-item key="/passenger">
              <router-link to="/passenger">
                <user-outlined /> &nbsp; 乘車人管理
              </router-link>
            </a-menu-item>
            <a-sub-menu key="sub1">
              <template #title>
                      <span>
                        <user-outlined />
                        subnav 11
                      </span>
              </template>
      
            </a-sub-menu>
            <a-sub-menu key="sub2">
              <template #title>
                      <span>
                        <laptop-outlined />
                        subnav 2
                      </span>
              </template>
              <a-menu-item key="5">option5</a-menu-item>
              <a-menu-item key="6">option6</a-menu-item>
              <a-menu-item key="7">option7</a-menu-item>
              <a-menu-item key="8">option8</a-menu-item>
            </a-sub-menu>
            <a-sub-menu key="sub3">
              <template #title>
                      <span>
                        <notification-outlined />
                        subnav 3
                      </span>
              </template>
              <a-menu-item key="9">option9</a-menu-item>
              <a-menu-item key="10">option10</a-menu-item>
              <a-menu-item key="11">option11</a-menu-item>
              <a-menu-item key="12">option12</a-menu-item>
            </a-sub-menu>
          </a-menu>
        </a-layout-sider>
      </template>
      
      <script>
      import {defineComponent, ref, watch} from 'vue';
      import router from "@/router";
      
      
      export default defineComponent({
        name: "the-sider-view",
        setup() {
          const selectedKeys = ref([]);
      
          watch(() => router.currentRoute.value.path, (newValue) => {
            console.log('watch', newValue);
            selectedKeys.value = [];
            selectedKeys.value.push(newValue);
          }, {immediate: true});
      
          return {
            selectedKeys,
            openKeys:ref(['welcome'])
          };
        },
      });
      </script>
      
      <!-- Add "scoped" attribute to limit CSS to this component only -->
      <style scoped>
      
      </style>
      
      

      效果:
      image
      image

      posted @ 2024-09-04 15:17  魚擺擺不擺  閱讀(150)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 麻豆国产成人AV在线播放| 日韩av中文字幕有码| 精品久久久久久无码不卡| 福利视频一区二区在线| 免费人成在线观看网站 | 最新亚洲人成网站在线观看| 午夜男女爽爽影院免费视频下载| 凉城县| 亚洲乱色一区二区三区丝袜| 国产亚洲精品成人aa片新蒲金 | 久久综合九色综合欧洲98| 北条麻妃一区二区三区av高清| 国产精品国产三级国产午| 四虎精品视频永久免费| 国产乱码精品一品二品| 国产亚洲精品福利在线无卡一| 欧美成人精品三级在线观看| 国产大学生粉嫩无套流白浆| 国产精品aⅴ免费视频| 久久香蕉国产线看观看怡红院妓院| 欧美性大战xxxxx久久久| 韩国精品一区二区三区在线观看| 色偷偷成人综合亚洲精品| 国产尤物精品自在拍视频首页 | 亚洲AV成人无码久久精品四虎| 国产中文三级全黄| 波多野无码中文字幕av专区| 中文字幕日韩人妻一区| 国产精品老熟女一区二区| 狠狠爱五月丁香亚洲综| 国产精品中文字幕在线| 人成午夜免费视频无码| 人妻夜夜爽天天爽三区丁香花| 99精品热在线在线观看视| 日韩女同一区二区三区久久| 女人腿张开让男人桶爽 | 国产精品午夜剧场免费观看| 日韩精品 中文字幕 视频在线| 麻豆文化传媒精品一区观看| 免费无码黄网站在线观看| 成人性能视频在线|