【发布时间】:2020-04-25 07:12:16
【问题描述】:
这是我的 Vue 模板的一部分:
<ul>
<li v-for="friend in user.friends">
<span v-if="checkIfNew(friend.id)"> ... </span>
</li>
</ul>
基本上,friends 是一个对象数组,如果我们有来自其中任何一个的新消息,我想显示 span 元素。这就是checkIfNew() 所做的。它检查朋友的 id 是否在unreadIds 数组中(它包含发送消息的朋友的 id)
此数组正在以不同的方法更新,但问题是:v-if 对更改没有反应。
这是脚本部分的一部分:
data(){
return {
unreadIds: []
}
},
methods:{
checkIfNew(id){
if(id in this.unreadIds) return true
else return false
}
},
computed:{
user(){
return this.$store.getters.user;
}
}
有人知道我做错了什么吗?
【问题讨论】:
-
告诉我们你如何更新
unreadIds。 -
@Ohgodwhy 它在 apollo $subscribe 部分,结果是:this.unreadIds.push(...)。我知道数组本身正在正确更新。
-
当您说“v-if 不会对更改做出反应。”时,这不是必需的,因为它在循环内。您需要的是循环对更改做出反应,这意味着进行计算,例如
friends() { return this.user.friends }并以此为基础循环。 -
@eric99 感谢 x2 unreadIds 是朋友的 id,他们发送了一条新消息。我会编辑这个问题,这真的很混乱
-
@RichardMatsen 消息不会影响朋友。因此,当新消息到达时,朋友不会改变。所以循环是基于朋友的,但我希望它也能对 unreadIds 做出反应......
标签: javascript vue.js