主页面
<template> <div> <ul v-for="item in courseList"> <router-link :to="{ name:index,query:{id:item.id} }">{{ item.title }}</router-link> </ul> </div> </template> <script> export default { name: "Couerse", data() { return { index: "CourseDetail", courseList: "" }; }, // 页面刚加载立即执行 = mounted
// mounted:在模板渲染成html后调用
mounted() { this.initCourse(); }, methods: { //这个方法也可以跳转 handleClick(ret) { this.$router.push({ path: `/CourseDetail/${ret}/`, query: { page: ret, code: "8989" } }); }, //通过ajax向接口发送请求并获取课程列表 //axios/jquery // npm install axios --save // 第一步:在main.js中配置 //第二步:使用axios发送请求 initCourse: function() { // 记住一点要定义一个全局的 this 来取值 var _this = this; this.$axios .request({ url: "http://127.0.0.1:8000/api/v1/course/", methods: "GET" }) .then(function(ret) { // ajax请求发送成功后,获取的响应内容 // ret.data= if(ret.data.code === 1000){ _this.courseList = ret.data.data; } }) .catch(function(ret) { // ajax请求发送失败后,获取的响应内容 }); } } }; </script> <style scoped> </style>
跳转后的页面
<template> <div> <img :src="detail.img" /> <h1>{{ detail.title }}</h1> <h3>{{detail.slogon }}</h3> <h5>{{ detail.level }}</h5> <p>{{ detail.why }}</p> <div> <ul v-for="item in detail.chapter"> <li>{{ item.title }}</li> </ul> </div> <br/> 推荐课程: <div> <ul v-for="item in detail.recommends"> <li>{{ item.title }}</li> </ul> </div> </div> </template> <script> export default { name: "CourseDetail", data() { return { detail: { course: null, img: null, level: null, slogon: null, title: null, why: null, chapter: [], recommends: [] } }; }, // created:在模板渲染成html前调用 created() { this.getRouterData(); }, methods: { getRouterData() { // 拿到主页面传过来的id值 this.id = this.$route.query.id; // 发送ajax请求给后端 请求详细信息
//获得一个全局的this
var _this = this; this.$axios .request({ url: `http://127.0.0.1:8000/api/v1/coursedetail/${this.id}/`, methods: "GET" }) .then(function(ret) { // ajax请求发送成功后,获取的响应内容 // ret.data= if (ret.data.code === 1000) { _this.detail = ret.data.data; } }) .catch(function(ret) { // ajax请求发送失败后,获取的响应内容 }); } } }; </script> <style scoped> </style>