javascript - 是否可以在created()完成后运行v-for?

标签 javascript vue.js axios es6-promise

我试图将相应的头像添加到每个通知中,以便我可以将其与通知的其余部分一起显示,但我无法自己解决这个问题。这是 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-forcreated() 方法之前运行,因此我的通知对象没有 avatar 属性v-for 执行的时间。

有什么办法可以让我在created()完成后才运行v-for吗?

谢谢!

最佳答案

使用

this.$set(notification, 'avatar', response.data)

手动触发 react 。您需要事先拥有一个 avatar 属性,以便在执行 notification.avatar = ... 时自动具有反应性。如果您没有该属性,则需要使用 Vue 中的此辅助函数。

这可能是对象以及数组的问题。

有关更多信息,请参阅 https://v2.vuejs.org/v2/guide/reactivity.html

关于javascript - 是否可以在created()完成后运行v-for?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55191758/

相关文章:

javascript - 在 html/javascript/css 中隐藏复选框边框

javascript - JQuery Fancybox 表单

css - Vuejs SPA需要根据语言为ltr和rtl加载css

css - Webpack 2 不会在 vue 文件中编译 css

javascript - 使用 axios 时可能出现未处理的 Promise 拒绝、网络错误

javascript - 将行元素从一个表移动到另一个表,并在将所选行元素添加到第二个表之前验证在第一个表中输入的数据

javascript - 无法通过 jquery 监听器将 html 表单链接到 javascript 函数

vue.js - VueJS - 安装 Hook 时出错 : "TypeError: this.$store is undefined"

vue.js - 在 Vue 2 中使用 Axios 调用 Promise

reactjs - react如何在不同组件中使用axios实例?