-1

解析出来的json对象:

"activity": {
        "num": 0,
        "items": []
    },
    data类数组对象下每个子对象包含一个activity属性

vue循环绑定v-if:

/*html大致就是这样一个结构*/
<ul>
    <li v-for="(item,index) in list">
        ...
        <p v-if="item.activity.num!=0">123</p>
    </li>
</ul>
/*数据结构*/
data:[{
    ...
    "activity": {
        "num": 0,
        "items": []
    },
},
{
    ...
    "activity": {
        "num": 0,
        "items": []
    },
}
]

v-if="item.activity.num"//这里就会报错


//vue.js:491 [Vue warn]: Error in render: "TypeError: Cannot read property 'num' of undefined"

//(found in <Root>)


what FFFFFFF!

最神奇的是我直接在js中获取:

var a = vm.list[0].activity.hasOwnProperty("items"); 
                                console.log(a);//true
//或者
console.log(vm.list[0].activity.num);//0
//可以看出来是能够正常获取到的
                                

如上注释,明明是可以获取到的属性,为何循环时条件渲染会报错?
请大神赐教!

查看全部 5 个回答

1

你得好好看看教程。。。
如果你没有事先定义 data 的属性
比如你这里的 data.list
那么 你后面再 vm.list = listFromAPI
Vue 是不能检测对象属性的添加或删除的

https://cn.vuejs.org/v2/guide...

https://cn.vuejs.org/v2/guide...