VUE中this.$set()

本文通过实例展示了如何使用Vue.js中的v-for和this.$set方法实现排行榜列表的动态加载,包括排行榜模板代码和网络请求处理。着重讲解了$set在处理嵌套数据结构中的应用,帮助读者理解其工作原理。
摘要由CSDN通过智能技术生成

一、 套入例子进行分析

1-1
  • 如下所示,双层遍历 得到展示列表
    在这里插入图片描述
1-2 “排行榜template代码”
 <el-row class="wrapper" :gutter="20">
          <el-col :span="6" v-for="item in top_list" :key="item.id" class="toplist_item">
            <div class="coverImg">
              <el-image :src="item.coverImgUrl"></el-image>
            </div>
            <div class="toplist_wrapper">
              <h4 class="toplist_hd">{{ item.name }}</h4>
              <div class="toplist_songlist">
                <div class="songitem" v-for="(songItem,index) in songList[item.id]" :key="songItem.id">
                  <div class="songnum">{{ index+1 }}</div>
                  <div class="songinfo">
                    <router-link :to="{ path: '/song',query: { id: songItem.id } }" class="song_title">{{ songItem.name }}</router-link>
                    <div class="song_author">
                      <router-link :to="{ path: '/artist/Singer', query: { id: author.id }}" class="song_name" v-for="(author, k) in songItem.ar" :key="k">{{ k !== 0 ? ' / ' + author.name : author.name }}</router-link>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </el-col>
        </el-row>
1-2 “排行榜”的网络请求
 // 排行榜的网络请求
    async getToplist () {
      this.$http.toplist().then((r) => {
        const { data: res } = r
        if (res.code !== 200) {
          return this.$msg.error('数据请求失败')
        }
        // console.log(res);
        return res
      }).then((r) => {
        this.top_list = r.list.splice(0, 4)
        this.top_list.forEach(async item => {
          const { data: res } = await this.$http.listDetail({ id: item.id })
          // console.log(res);
          this.$set(this.songList, item.id, res.playlist.tracks.splice(0, 6))
          // 思路如下,但是页面不显示
          // this.songList[item.id]  = res.playlist.tracks.splice(0,6)
        })
      })
    },

二、 this.$set()

vue.js官网讲解 vue.set()

1、 this.$set 的思路 如同注释行

this.$set(this.songList, item.id, res.playlist.tracks.splice(0, 6))

 // this.songList[item.id]  = res.playlist.tracks.splice(0,6)
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值