Учтите это:
- API загружает манифест метаданных изображения. Изображения имеют идентификатор, и при другом вызове API возвращает изображение base64 из БД. Модель для манифеста -
attachmentRecord
, а идентификатор - просто поле. - Я бы предпочел не загружать эти большие строки в массив (это будет работать).
, поэтомуУ меня есть это (которое лениво загружается при любом изменении манифеста):
<div v-for="(attachment, index) in attachmentRecord" :key="index">
<img :src="fetchImage(attachment.id)" />
</div>
fetchimage()
- это обертка для функции axios, которая возвращается из обещания. (записывает это по памяти):
this.axios({
method: "get",
url: url,
}).then(res => res.data)
.catch(() => {
alert("Unable to load raw attachment from this task and ID");
});
}
Теперь сетевые вызовы проходят нормально, идентификатор проходит правильно, я вижу базовые данные 64, но, похоже, они не превращаются в функцию-оберткуили атрибут src. Это всегда приходит пустым. Я попытался обернуть его в другое обещание, только чтобы вернуть обещание к атрибуту src. Что было бы лучше для этой ситуации в Vue?
Хорошо, пока я внес эти изменения с помощью Константина: я пытался сократить его без вспомогательной функции:
Код шаблона Vue:
<div v-for="(attachment, index) in attachmentRecord" :key="index">
<img :src="getAttachmentFromTask(attachment.id)" />
базовый метод:
async getAttachmentFromTask(attachmentID) {
if (!attachmentID) alert("Unknown Attachment!");
let sendBack = "";
let url = "/server/..."
await this.axios({
method: "get",
url: url
})
.then(res => {
sendBack = res.data;
})
.catch(() => {
alert("Unable to load raw attachment from this task and ID");
});
// >>>>>>>>>alerts base64 correctly; Vue loads [object Promise] in img
alert(sendBack);
return sendBack;
}