Я начинаю с Vue.js, и я хотел бы использовать компонент. У меня есть (динамическая) таблица с машинами (SN = серийный номер) и их деньги для каждого источника, поэтому я хочу использовать rowspan. Каждая строка будет экземпляром компонента, потому что имеет собственный флажок, и я хотел бы работать с ним позже. Проблема в том, что я не знаю, как использовать цикл с созданием компонента, который немного сложнее внутри таблицы. Вот пример:Vue.js - Компонент с двумя рядами.
<div id="container">
<table border="1">
<template v-for="row in storage.rows">
<tr>
<td rowspan="2"><input type="checkbox"></td>
<td rowspan="2">{{row.sn}}</td>
<td>{{row.source}}</td>
</tr>
<tr>
<td>{{row.pair.source}}</td>
</tr>
</template>
</table>
</div>
<script>
new Vue({
el: '#container',
data: {
storage: {
rows: [
{sn: 111, source: 'EK', pair: {source: 'VLT', in: 100}},
{sn: 222, source: 'EK', pair: {source: 'VLT', in: 200}}
]
}
},
});
</script>
Это прекрасно работает, но я не знаю, как преобразовать шаблон в компонент. С Vue.js Я использую Laravel и его лезвие двигателя шаблон поэтому у меня есть обходной путь, как это:
<div id="container">
<table border="1">
@foreach($differences as $difference)
<tr is="ek" diff="{{ json_encode($difference) }}"></tr>
<tr is="vlt" diff="{{ json_encode($difference->pair) }}"></tr>
@endforeach
</table>
</div>
<template id="ek-template">
<tr>
<td rowspan="2"><input type="checkbox"></td>
<td rowspan="2">@{{ difference.sn }}</td>
<td>@{{ difference.source }}</td>
</tr>
</template>
<template id="source-template">
<tr>
<td>@{{ difference.source }}</td>
</tr>
</template>
<script>
new Vue({
el: '#container',
data: {
storage: {
differences: {!! json_encode($differences) !!}
}
},
components: {
ek: {
template: '#ek-template',
props: ['diff'],
computed: {
difference: function() {
return JSON.parse(this.diff);
},
},
},
vlt: {
template: '#source-template',
props: ['diff'],
computed: {
difference: function() {
return JSON.parse(this.diff);
},
},
}
},
});
</script>
И я хочу, чтобы использовать петлю Vue.js вместо Laravel-х foreach
, потому что у меня есть уже данные в объекте Vue.js , Есть ли решение, как это сделать?