Задать вопрос
@alzow

Как указать src изображения из переменной во Vue.js?

Изучаю Vue.js (попутно разбираясь с webpack), и столкнулся со следующей проблемой: с помощью v-for вывожу список категорий, а изображение категории не отображается (404).

<template>  
            <div v-for="cat in categories" :key="cat.id">
                <CategoryCard :category="cat"></CategoryCard>
            </div>
</template>

Родительский компонент
<script>
import CategoryCard from '@/components/CategoryCard';

export default {
    name: 'Categories',
    components: {CategoryCard},
    data: function(){
        return {
            categories: [
                {name: 'Медицина', id: 1, image: './../assets/logo.png'},
                {name: 'Архитектура', id: 2, image: './../assets/logo.png'},
                {name: 'Искусство', id: 3, image: './../assets/logo.png'},
                {name: 'Автомобили', id: 4, image: './../assets/logo.png'},
                {name: 'Техника', id: 5, image: './../assets/logo.png'},
                {name: 'Криптовалюты', id: 6, image: './../assets/logo.png'},
                {name: 'Еще что-то', id: 7, image: './../assets/logo.png'},
            ]
        }
    }
}
</script>


Дочерний:
<template>
    <div class="card">
        <div class="card-image">
          <img :src="category.image">
          <span class="card-title">{{ category.name }}</span>
        </div>
      </div>
</template>

<script>
export default {
    name: 'CategoryCard',
    props: ['category'],
}
</script>


Соответственно, вот эта нотация не работает:
<img :src="category.image">

А вот эта работает:
<img src="./../assets/logo.png">

Как сделать чтобы работала первая?
  • Вопрос задан
  • 16082 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
При использовании шаблона webpack из vue-cli картинки, которые должны идти без обработки, следует класть в static (или её подпапку), и пути к ним писать так, как будто бы static лежит в корне, рядом с index.html. Если хочется класть в assets (или используется другой шаблон/полностью ручная настройка), то следует настроить webpack таким образом, чтобы имена картинок после url-loader или другого используемого модуля были предсказуемы (например при ресайзе - указывать целевое разрешение в имени файла) и указывать уже это выходное имя файла в свойстве.
Ответ написан
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
image: '../assets/logo.png'

<img src="./../assets/logo.png">


А почему пути по разному написаны? Хотя по сути-то они одинаковые, но кто знает как у вас там что настроено.

Пример на фидл бы как не работает это.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы