javascript - created() 完成后是否可以运行 v-for ?
问题描述
我正在尝试将相应的头像添加到每个通知中,以便我可以将其与通知的其余部分一起显示,但我自己无法解决这个问题。这是 Vue.js 模板中的 HTML:
<li class="notification" v-for="(notification, index) in notifications">
<a>
<span class="image">
<img :src="notification.avatar" alt="Avatar" />
</span>
<span class="link">
<span v-text="notification.data.sender_name"></span>
</span>
<span class="message" v-text="notification.data.message"></span>
</a>
</li>
这是js:
data() {
return {
user: this.initialUser,
notifications: this.initialUser.unread_notifications,
}
},
created() {
let self = this;
self.notifications = this.initialUser.unread_notifications;
self.notifications.forEach(function(notification) {
if(notification.data.sender_id) {
axios.post(self.user.path + '/get-avatars', {
id: notification.id,
}).then((response) => {
let promise = new Promise(function (resolve, reject){
notification.avatar = response.data;
});
});
}
});
},
我遇到的问题是v-for
在方法之前运行created()
,因此我的通知对象在执行 v-for 时没有 avatar 属性。
有什么方法可以在 created() 完成后运行 v-for 吗?
谢谢!
解决方案
利用
this.$set(notification, 'avatar', response.data)
手动触发反应。您需要avatar
事先拥有一个属性,以便在执行notification.avatar = ...
. 如果您没有该属性,则需要使用 Vue 中的此帮助函数。
这可能是对象和数组的问题。
推荐阅读
- java - android studio java 翻译语言
- python - 模型不学习
- javascript - 使用ajax发送消息
- spring-aop - 方法调用和方法执行——Spring AOP
- python - 谷歌地理编码 API OVER_QUERY_LIMIT 问题
- fullscreen - 观看全屏视频时防止 xautolock/i3lock
- python - 如何使用 tkinter 条目小部件?
- haskell - 未能在我自己定义的数据结构上使用地图
- javascript - 如何使用 Chart.js 制作一个单独的圆环图扇区?
- file - JavaFX:如何将文本文件的内容描绘成 TextArea