vue 获取数据无法渲染视图

先上代码


<template>
    这里粗略表示一下,显示对应分组数据的
    <div>
        <p v-for=item in currentData>
            {{item.name}}
        </p>
    </div>
</template>
data () {
    products: [[], [], [], []]
    activeIndex: 0
},
methods: {
    getDefaultData () {
        this.$axios.get(url).then(res => {
            this.products[this.activeIndex] = res.data.data
        })
    }
},
computed: {
    currentData () {
        return this.products[this.activeIndex]
    }
},
created () {
    this.getDefaultData()
}

描述一下, 有四个分组,四个分组显示自己对应的商品,点击每个分组,会将当前分组的索引值赋值给activeIndex,接口地址基本相同区别就是这个索引值来获取不同分组的数据.
created首次获取数据的时候,this.products[this.activeIndex]可以知道已经取到了数据,第一页十条,但是在视图上却没有更新出来数据

如图

clipboard.png


当我随便点击一次按钮之后数据就显示出来了,但也只是显示一次!

clipboard.png

请各位大佬帮忙,谢谢

阅读 6k
4 个回答

自己回答下
还是自己掌握不清楚,惭愧

// 原来的代码
this.products[this.activeIndex] = res.data.data
// 修改后的代码
this.$set(this.products, this.activeIndex, res.data.data)

这样就可以更新了,谢谢大家

products改成{0:[],1:[],2:[],3:[]}

this.products[this.activeIndex] = res.data.data  
改成
Vue.set(this.products, this.activeIndex, res.data.data)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题