请教Vue中的v-for循环为什么无论我用什么方法都不更新视图呢?
代码用的是官方默认helloworld模板
ProductItem一开始是空对象,通过接口赋值给list属性,然后无论我使用this.$set也好,还是通过v-if来渲染,都没效果。
有什么办法解决?
<template>
<div class="hello">
456
<view v-if="sign" v-for="(oItem,index) in ProductItem.list" :key="index"
:id="index"
:data-opid="oItem.id" :data-marketprice="oItem.marketprice" :data-title="oItem.title"
:style="oItem.select ? 'background-color: rgba(214, 34, 56, 0.04);border:1px solid #D0021B;font-size:13px;color: #D0021B' : 'background-color: #fff;border:1px solid #999;font-size:13px;color: #333'"
>{{oItem.title}}</view>
<button @click="ddd">点击</button>
</div>
</template>
<script>
import _ from "lodash";
export default {
name: 'HelloWorld',
data () {
return {
msg: 'Welcome to Your Vue.js App',
sign:false,
ProductItem:{}
}
},
mounted(){
// let arr = _.chunk(['a', 'b', 'c', 'd'], 3);
// console.log(arr)
},
methods:{
ddd(){
this.$set(this.ProductItem,"list",[
{
"id":1,
"marketprice":100,
"title":"test1",
"select":false
},
{
"id":2,
"marketprice":100,
"title":"test2",
"select":false
},
{
"id":3,
"marketprice":100,
"title":"test3",
"select":false
}
])
/*
this.ProductItem.list = [
{
"id":1,
"marketprice":100,
"title":"test1",
"select":false
},
{
"id":2,
"marketprice":100,
"title":"test2",
"select":false
},
{
"id":3,
"marketprice":100,
"title":"test3",
"select":false
}
];*/
console.log(this.ProductItem)
this.sign=true
}
}
}
</script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
给
ProductItem
初始化一个list
数组控制台应该一进页面就报错了吧,v-for
ProductItem.list 初始值是 undefined
view标签是小程序的吧,你换成div就可以正常显示了
ProductItem
应该初始化为{ list: [] }
:key
不要用index
,应该换成对象中的唯一标识字段$set
,直接ProductItem.list = ...
就可以了