8.get传值—页面跳转

使用query获取get传递的值

项目结构

image.png
mv/index.vue

  1. <template>
  2. <div class="container">
  3. <mv-index :data="item"
  4. v-for="item of data" :key="item.id"></mv-index>
  5. </div>
  6. </template>
  7. <script>
  8. import MvIndex from '../Mv/components/MvIndex'
  9. export default {
  10. name:"Mv",
  11. data(){
  12. return{
  13. data:[],
  14. }
  15. },
  16. components:{
  17. MvIndex
  18. },
  19. mounted(){
  20. this.axios.get("mv/first?limit=12").then(res=>{
  21. this.data=res.data.data;
  22. })
  23. }
  24. }
  25. </script>

2-1在列表页传值this.$router.push()

mv/components/MvIndex.vue
要通过点击对应的item将id传过去,使用组件之后,item在子组件中,所以通过子组件传

  1. //1.在子组件中定义一个事件,传id
  2. <template>
  3. <div @click="handleClick(data.id)">
  4. <img :src="data.coverImgUrl" />
  5. <p>{{data.name | format()}}</p>
  6. </div>
  7. </template>
  8. //2.在methods方法中触发
  9. methods:{
  10. handleClick(id){
  11. console.log(id)
  12. this.$router.push(`/detail?id=${id}`)
  13. }
  14. }

2-2在详情页接收这个值—computed

MvDetail/index.vue

  1. export default {
  2. name:"Detail",
  3. computed:{
  4. id(){
  5. return this.$route.query.id
  6. }
  7. },
  8. //发送请求
  9. mounted(){
  10. var id=this.id; //获取id
  11. this.axios.get(`/top/playlist/detail?id=${id}`).then(res=>{
  12. console.log(res)
  13. })
  14. }
  15. }

2-3在详情页跳转回列表页

  1. this.$router.back()
  2. //定义一个事件
  3. <template>
  4. <div>
  5. <p>detail页面</p>
  6. <button @click="toggle">跳转回列表页面</button>
  7. </div>
  8. </template>
  9. //methods中触发
  10. export default {
  11. name:"Detail",
  12. ...
  13. methods:{
  14. toggle(){
  15. this.$router.back()
  16. }
  17. }
  18. }

1.gif

2-4如果要传多个值,传的方式和id一样

  1. //首页data.name
  2. <template>
  3. <div class="list" @click="handleClick(data.id,data.name)">
  4. <img :src="data.cover" alt="" class="bg">
  5. <p>{{data.name |format()}}</p>
  6. </div>
  7. </template>
  8. methods:{
  9. handleClick(id,name){
  10. this.$router.push(`/mvplay?id=${id}&name=${name}`)
  11. }
  12. }
  13. //详情页接收
  14. <template>
  15. <p>{{name}}</p> //直接使用
  16. </template>
  17. computed:{
  18. id(){
  19. return this.$route.query.id
  20. },
  21. name(){
  22. return this.$route.query.name
  23. }
  24. },
  25. methods:{
  26. toggle(){
  27. this.$router.back()
  28. }
  29. }

课件地址https://gitee.com/wangsiman/work/tree/master/vue/wangyi-music