索引未知时更新特定的数组条目

时间:2017-03-07 10:11:52

标签: laravel vue.js vuejs2

在页面加载时,我从服务器接收一组对象,这些对象使用v-for循环显示。

应用程序是实时的,所以当另一个用户更新数组中的对象时,我会收到一个包含更新对象的推送事件(这是一个包含更新模型的Laravel 5.4广播事件)。

如何在数组中找到该对象以将其替换为更新版本?

示例组件JS

export default{
    data(){
        return {
            items: []
        }
    },

    mounted(){
       ...some code to get the array from the server

       this.items = server.response;
    },

    created() {
         Echo.private('channel-name)
           .listen('event', (event) => {

               **What do I do here with the received model to update the items array?**

            });
        });
    }
}

1 个答案:

答案 0 :(得分:2)

我认为您的item实体中应该有一些ID,然后只需查找具有相同ID的项目并替换它。例如,可以使用map:

来替换
...
//assuming you have ID inside your item entity
//and your new "replacement" model is in event.item

.listen('event', (event) => {
  var newItem = event.item;

  this.items = this.items.map(item => {
   return item.ID === newItem.ID ? newItem : item;
  });
});
...