Я пытаюсь получить данные со своего сервера API с помощью axios, но получаю такую ошибку:
'v-bind' directives require an attribute value.
Я не знаю, как мне использовать v-bind, чтобы это исправить.
Вот мой код:
<template>
<div class = "main">
<p class = "title"><span>Fetured Items</span><br>
<span>Shop for items based on what we featured in this week</span></p>
<div v-if = "products && products.length" class = "content">
<content-item v-for = "product in products" :key = "product.id"
v-bind:name = "product.name"
v-bind:price = "product.price"
v-bind:srcToProdImage= 'localhost:8081/' + product.productImage></content-item>
</div>
<p class = "cont-btn">
<button class = "btn">Browse All Product <span><i class = "fas fa-arrow-right"></i></span></button>
</p>
</div>
</template>
<script>
import Content_item from './Content-item';
import axios from 'axios';
export default {
data:{
products,
errors
},
created(){
axios.get('localhost:8081/products')
.then((result) => {
this.products = result.data.products
}).catch((err) => {
this.errors.push(err)
});
},
components: {
'content-item' : Content_item
}
}
</script>
<style lang = "scss" scoped>
.content{
display: flex;
flex-wrap: wrap;
margin-left: 150px;
margin-right: 150px;
justify-content: space-between;
}
.title{
text-align: center;
margin-top: 40px;
margin-bottom: 30px;
span:first-child{
font-family: 'Lato', sans-serif;
font-weight: 800;
color: #222222;
font-size: 30px;
}
span:last-child{
font-family: 'Lato', sans-serif;
font-weight: 400;
color: #9f9f9f;
font-size: 14px;
}
}
.cont-btn{
display: flex;
justify-content: center;
}
.btn{
padding: 18px 24px 18px 24px;
background-color: #f16d7f;
font-family: 'Lato', sans-serif;
font-weight: 800;
border: none;
outline: none;
color: #ffffff;
}
</style>
Вы можете использовать вычисленный, который возвращает ожидаемый URL-адрес, и использовать вычисленное как значение привязки.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто заключите выражение srcToProntImage в двойные кавычки:
<content-item v-for = "product in products" :key = "product.id"
v-bind:name = "product.name"
v-bind:price = "product.price"
v-bind:srcToProdImage = "'localhost:8081/' + product.productImage"></content-item>
Спасибо. Но у меня другая ошибка. Я обновляю вопрос.
Небольшое объяснение - vue пытается оценить выражение, присвоенное v-bind:whatever, поэтому вам нужны кавычки вокруг вашей строки, поскольку localhost:8081/ + someVar в javascript также вызовет исключение.
вам необходимо обновить функцию данных: products: [], errors: []
У вас может быть какой-то синтаксическая ошибка. Пожалуйста, проверьте, есть ли какие-нибудь символы <,> или exstra "в ваших кодах, связанных с Vue. В моем случае это была ошибка.
Этот
v-bind:srcToProdImage= 'localhost:8081/' + product.productImageнедействителен.