Привязать изображение из внешнего источника - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь привязать фоновое изображение из внешнего источника данных через Vue.js.Вот как выглядит код:

<div class="image-box border"
            :style="{ background: `url(`+ item.image +`) no-repeat center` }" 
            style="width: 220px; height: 220px">

Я также пробовал это:

<div class="image-box border" 
            :style="{ 'backgroundImage': 'url(' + item.image + ')' }">

Вот как URL читается в приложении без ошибок:

background-image: url("http://localhost:8080/assets/images/shoe-1.png");

Любая помощь приветствуется!

Полный код:

компонент -

<template>
    <div class="product-card-box border">
        <div class="image-box border"
                :style="{ background: `url(`+ item.image +`) no-repeat center` }" 
                style="width: 220px; height: 220px">
             <!-- :style="{ 'backgroundImage': 'url(' + item.image + ')' }"> -->

        </div>
        <div class="info-box border">
            <div class="color-info product-info bold">{{item.colors.length}} color</div>
            <div class="product-name">
                <div class="product-info bold">{{item.name}}</div>
                <div class="product-info sub-info">{{item.gender}}'s Shoe</div>
            </div>
            <div class="product-price">
                <div class="product-info sub-info">${{item.price}}</div>
            </div>

        </div>
    </div>
</template>

данные -

const data = [
{
    name: 'SNKR 001',
    gender: 'Men',
    price: 100,
    sport: 'running',
    width: 'Wide',
    colors: ['black', 'white', 'green', 'pink'],
    sizes: [3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 14, 15],
    image: '../assets/images/shoe-1.png'
},
{
    name: 'SNKR 002',
    gender: 'Men',
    price: 100,
    sport: 'running',
    width: 'Wide',
    colors: ['black', 'white', 'green', 'pink'],
    sizes: [3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.5, 13, 14, 15],
    image: '../assets/images/shoe-1.png'
}
];
export default data;

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

В data[] используйте require(path), чтобы путь в вашем шаблоне был правильно определен:

image: require('../assets/images/shoe-1.png')
0 голосов
/ 05 марта 2019

Рассмотрим только один объект style.Кроме того, это должно быть фоновое изображение?Я уверен, что вы могли бы сделать то же самое с img и классом и просто сделать это object-fit.

<div id="app">
  <div :style="{ 
    width: '200px',
    height: '200px',
    'background-image': `url(${backgroundImage}`,
   }"/>
</div>

new Vue({
  el: "#app",
  data: {
    backgroundImage: 'http://picsum.photos/g/1200/400?image=30',
  },
})

Проверьте эту скрипку для решения object-fit https://jsfiddle.net/caseyjoneal/b5r8fvjq/73/

...