IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue项目 课程列表页 跳转 课程详情页 跳转 视频播放页 -> 正文阅读

[JavaScript知识库]Vue项目 课程列表页 跳转 课程详情页 跳转 视频播放页

课程列表页Course.vue - Coursemain.vue 跳转至 课程详情页

 <!-- 课程列表 -->
      <div class="container-body" v-if="courseArr && courseArr.length > 0">
        <div class="newCourseContent">
          <ul class="courseUl">
            <li
              class="courseItem"
              v-for="(item, index) in courseArr"
              :key="index"
            >
              <div class="courseInfo">
                <!-- 跳转至详情页 -->
                <router-link :to="{ path: '/course-info/' + item.id }">
                  <div
                    class="memberlogo"
                    v-if="item.isMember == 1 && item.discountPrice != 0"
                  >
                    <img src="../../assets/image/member/vipLogo.png" alt="" />
                  </div>
                  <div class="courseBg">
                    <img class="courseImg" :src="item.courseCover" alt="" />
                  </div>
                </router-link>
              </div>
            </li>
          </ul>
        </div>
      </div>

路由 router.js

import Vue from 'vue';
import Router from 'vue-router';

import home from '@/views/Home.vue';
import Course from '@/views/course/Course.vue';
import CourseInfo from '@/views/course/CourseInfo.vue';
import CoursePlay from '@/views/course/CoursePlay.vue';
import contact from '@/views/Contact.vue';

Vue.use(Router);

const routes = [
  { path: '/', component: home },
  { path: '/course', component: Course, name: "course" },
  { path: '/course-info/:courseId', component: CourseInfo, name: "course-info" },
  {
    path: '/course-play/:courseId/:chapterId', component: CoursePlay, name: "course-play",
    meta: { requiresAuth: false }
  },
  { path: '/contact', component: contact },
];

export default new Router({
  routes,
  mode: 'history',
});

课程详情页Courseinfo.vue - Courseinfocontainer.vue 跳转至 课程播放页

<template>
  <div class="courseContainer">
    <div class="course">
      <div class="main">
        <div class="video" v-for="(item, index) in courseChapters" :key="index">
          <div class="chapterName">{{ item.chapterName }}</div>
          <div class="chapterDesc">{{ item.description }}</div>
          <ul class="videos">
            <li class="video-item" v-for="(j, k) in item.children" :key="k">
              <div class="video-itemIcon">
                <i class="el-icon-video-camera"></i>
              </div>

              <div class="item-name">
                <span class="shipin">视频:</span>
                <span class="chapterName">{{ j.chapterName }}</span>
                <span class="free" v-if="j.publicType == 2">试看</span>
              </div>
              <!-- 准备跳转 传:课程id,章节id,是否为试看课 -->
              <button
                class="btn-learn"
                @click="goPlay(courseInfoArr.id, j.id, j.publicType)"
              >
                开始学习
              </button>
              <div class="clearfloat"></div>
            </li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</template>


<script>
import api from "../../common/api/CourseinfoContainer/courseDetail";
export default {
  data() {
    return {
      // ====接收传来的courseId 调获取详情接口时要使用
      courseId: this.$route.params.courseId, //路由传过来的课程ID
      courseInfoArr: {}, //课程信息
      courseChapters: {}, //课程章节信息
    };
  },
  created() {
    this.getCourseInfo();
  },
  methods: {
    //获取课程详情
    async getCourseInfo() {
      let res = await api.getCourseInfo(this.courseId);
      console.log(res);
      this.courseInfoArr = res.data.data;
      this.courseChapters = res.data.data.bizCourseChapters;
      switch (this.courseInfoArr.courseLevel) {
        case 1:
          this.courseInfoArr.courseLevel = "初级";
          break;
        case 2:
          this.courseInfoArr.courseLevel = "中级";
          break;
        case 3:
          this.courseInfoArr.courseLevel = "高级";
          break;
        default:
          this.courseInfoArr.courseLevel = "零基础";
      }
    },
    //开始学习 按钮跳转
    goPlay(courseId, chapterId) {
      this.$router.push({
        path: "/course-play/" + courseId + "/" + chapterId,
      });
    },
  },
};
</script>

课程播放页 CoursePlay.vue - CoursePlayMain.vue?

<template>
  <div class="main">
    <div class="top">
      <span class="goBack el-icon-back" @click="goBack"> </span>
      <span class="name">笑傲江湖 - 第一天</span>
      <span class="collect" >
                <i class="el-icon-star-on"></i>
                收藏
            </span>
    </div>
  </div>
</template>

<script>
export default{
  data(){
    return{}
  },
  methods:{
    goBack(){//返回上一页
      window.history.go(-1)
    }
  }
}
</script>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 22:59:45  更:2022-01-29 23:02:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:11:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码