1

我有这个数据保存在这个变量中this.roomsData.room_photos

[ { "url": "https://api.example.com/uploads/609ee58907166.jpg" }, { "url": "https://api.example.com/uploads/609ee5898ba19.jpg" }, { "url": "https://api.example.com/uploads/609ee58994a10.jpg" }, { "url": "https://api.example.com/uploads/609ee589af635.jpg" }, { "url": "https://api.example.com/uploads/609ee589b0fc7.jpg" }, { "url": "https://api.example.com/uploads/609ee589cd79f.jpg" }, { "url": "https://api.example.com/uploads/609ee589d8d27.jpg" } ]

和这个数据

[ { "url": "https://api.example.com/uploads/609eeded64530.jpg" }, { "url": "https://api.example.com/uploads/609eeded68ebe.jpg" }, { "url": "https://api.example.com/uploads/609eeded6a6bc.jpg" } ]

我有这个变量this.roomsData.edit_room_photos,它是从

uploadRoomImages: async function (file, progress, error, options) {
    try {
        console.log(file, options);
        const formData = new FormData()
        formData.append('room_photos', file)
        const result = await fetch('https://api.example.com/uploads_scripts/rooms.php', {
            method: 'POST',
            body: formData
        })
        progress(100) // (native fetch doesn’t support progress updates)
        return await result.json()
    } catch (err) {
        error('Unable to upload file')
    }

},

这是组件

<FormulateInput
          type="image"
          name="room_photos"
          v-model="roomsData.edit_room_photos"
          label="Select Room Images To Upload"
          help="Select a png, jpg,webp or gif to upload."
          validation="required|mime:image/jpeg,image/png,image/gif,image/webp"
          :uploader="uploadRoomImages"
          error-behavior="live"
          multiple
/>

由于这个变量中已经有数据this.roomsData.room_photos,我如何将这个变量this.roomsData.room_photos 中的数据添加到我从等待我的函数解析和存储数据中获得的数据中this.roomsData.edit_room_photos

我在表单提交处理程序上尝试了对象分配和数组连接,但这会导致循环 json 错误。

我想将两个数组中的数据一起添加而不删除重复项。如何在不删除重复项的情况下将两个数组组合在一起。

4

2 回答 2

1

您可以将计算值与 setter 一起使用:

computed: {
  room_photos: {
    get: function () {
      return [...this.roomsData.room_photos, ...this.roomsData.edit_room_photos];
    },
    set: function (newValue) {
      this.roomsData.edit_room_photos = newValue.slice(this.roomsData.room_photos.length);
    },
  },
},
于 2021-05-15T00:52:19.530 回答
1

如果 的结果uploadRoomImages()导致 的值roomsData.edit_room_photos,您只需将 的返回值修改为uploadRoomImages()另一个.concat数组:

uploadRoomImages: async function (file, progress, error, options) {
    try {
        //...
        const result = await result.json()
        return result.concat(this.roomsData.room_photos)
    } catch (err) {
        error('Unable to upload file')
    }
},

NoteArray.prototype.concat()不会过滤掉重复项,因此在这种情况下无需担心丢失重复条目。

于 2021-05-15T01:45:52.670 回答