Я не использую Vue.js, но меня поразило то, что вы сказали, что ваш card
компонент принимает свойство card
, но вместо этого вы даете ему свойство key
.Другая вещь, которая выскочила, это попытка получить card.img
в двух местах (шаблон и разметка).
Если вы измените v-bind:key="card.img"
на v-bind:card="card"
(или :card="card"
), вразметка, работает:
function Board()
{
this.cards = [new Card()];
}
function Card()
{
this.img = 'img.png';
}
Vue.component('card',
{
props:['card'],
template: '<img v-bind:src="card.img">'
});
let app = new Vue(
{
el:'#app',
data:
{
board: new Board()
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<card v-for="card in board.cards" v-bind:card="card">
</div>
Или, если хотите, key
, а также и card
, поэтому Vue.js упорядочит карты на card.img
вы бы оба:
function Board()
{
this.cards = [new Card()];
}
function Card()
{
this.img = 'img.png';
}
Vue.component('card',
{
props:['card'],
template: '<img v-bind:src="card.img">'
});
let app = new Vue(
{
el:'#app',
data:
{
board: new Board()
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<card v-for="card in board.cards" v-bind:key="card.img" v-bind:card="card">
</div>