Vue-element 实现首页的侧边栏导航

997 阅读1分钟

利用ele引入一个组件,如下图

image.png

然后对代码进行修改,留下需要的内容,如下:

  <div>
    <el-container style="height: 100vh; border: 1px solid #eee">
      <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
        <el-menu :default-openeds="['1']" :router="true">
          <el-submenu
            :index="(i + 1).toString()"
            v-for="(v, i) in list"
            :key="i"
          >
            <template slot="title"
              ><i class="el-icon-menu"></i>{{ v.authName }}</template
            >
            <el-menu-item
              :index="'/first/' + item.path"
              v-for="(item, index) in v.children"
              :key="index"
              >{{ item.authName }}</el-menu-item
            >
          </el-submenu>
        </el-menu>
      </el-aside>

      <el-container>
        <el-header style="text-align: right; font-size: 12px">
          <el-dropdown>
            <i class="el-icon-setting" style="margin-right: 15px"></i>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item>查看</el-dropdown-item>
              <el-dropdown-item>新增</el-dropdown-item>
              <el-dropdown-item>删除</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
          <span>王旭</span>
        </el-header>

        <el-main>
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

在script里面调用接口,渲染侧边栏axios.get("xxxxxxx.com:8889/api/private…", { headers: { Authorization: localStorage.token, }, })

再first页面下再创建8个二级页面,当做导航栏的跳转页面

image.png

通过:router="true" 给ele组件添加跳转功能

import axios from "axios";
export default {
  name: "FirstPage",
  data() {
    const item = {
      date: "2016-05-02",
      name: "王小虎",
      address: "上海市普陀区金沙江路 1518 弄",
    };
    return {
      tableData: Array(5).fill(item),
      list: [],
    };
  },
  created() {
    this.getNavList();
  },
  methods: {
    getNavList() {
      axios
        .get("http://xxxxxxx.com:8889/api/private/v1/menus", {
          headers: {
            Authorization: localStorage.token,
          },
        })
        .then((res) => {
          console.log(res);
          let { data, meta } = res.data;
          if (meta.status == 200) {
            this.list = data;
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
  },
};
</script>
.el-header {
  background-color: #b3c0d1;
  color: #333;
  line-height: 60px;
}

.el-aside {
  color: #333;
}
</style>

最后的效果图如下:

image.png