Reputation: 2177
i would like to create some kind of html template and put data one after another like this:
<template>
<app-timeline>
<app-timeline-item
title="Goal Achieved"
subtitle="All milestones are completed"
time="few minutes ago"
variant="success"
>
<div>Nick</div>
</app-timeline-item
<app-timeline-item
title="Last milestone remain"
subtitle="You are just one step away from your goal"
time="3 minutes ago"
variant="info"
>
<div>Mark</div>
</app-timeline-item>
<app-timeline-item
title="Your are running low on time"
subtitle="Only 30 minutes left to finish milestone"
time="21 minutes ago"
variant="warning"
>
<div>Max</div>
</app-timeline-item>
<app-timeline-item
title="Client Meeting"
subtitle="New event has been added to your schedule"
time="36 minutes ago"
>
<div>Nico</div>
</app-timeline-item>
<app-timeline-item
title="Product Design"
subtitle="Product design added in workflow"
time="1 hour ago"
variant="secondary"
>
<div>Tom</div>
</app-timeline-item>
</app-timeline>
</template>
So as i assume te template should be:
<template>
<app-timeline>
<app-timeline-item
title="{{ title }}"
subtitle="{{ subtitle }}"
time="{{ time}}"
variant="{{ variant}}"
>
<div>{{ name }}</div>
</app-timeline-item>
</app-timeline>
</template>
how should i create method which will create new <app-timeline-item>
every time i receive data (some kind of loop)?
Upvotes: 0
Views: 155
Reputation: 577
Based on what you asked you can use v-for in this case:
new Vue({
data() {
return {
array: [
{title: "Title one", subtitle: "Subtitle one", time: "Time one", variant: "Info", name: "Mark"},
{title: "Title two", subtitle: "Subtitle two", time: "Time two", variant: "Danger", name: "Tag"},
{title: "Title three", subtitle: "Subtitle three", time: "Time three", variant: "Success", name: "Robert"},
{title: "Title four", subtitle: "Subtitle four", time: "Time four", variant: "Primary", name: "Sara"}
]
}
},
methods: {
addSomeItemsToArray() {
this.array.push({title: "Title five", subtitle: "Subtitle five", time: "Time five", variant: "secoundary"})
}
}
})
<template>
<app-timeline>
<app-timeline-item
v-for="item in array"
:key="item.title"
:title="item.title"
:subtitle="item.subtitle"
:time="item.time"
:variant="item.variant"
>
<div>{{item.name}}</div>
</app-timeline-item>
</app-timeline>
</template>
If you want to add any item to the array you can do it with Array.push(). This will help you even when you want to add any item in an ajax request.
Upvotes: 6