1

I'm cloning a flash app (http://bqgh6e.axshare.com/module.html) using vue and I need to create transitions between items created with v-for.

I've got transitions working between different components on my App.vue https://github.com/alansutherland/BodyGuard/blob/master/src/App.vue

However, within Module1.vue I'm generating slides using v-for https://github.com/alansutherland/BodyGuard/blob/master/src/components/Module1.vue

Is it possible to dynamically create router links for each item generated within the module and transition to them from one another?

Here is a hosted demo of the project so far: https://bodyguard-9c7b0.firebaseapp.com/module-1

My current solution is to wrap the slides within a large parent and navigate them as a carousel. Not sure if this is a good solution for optimization and it doesn't feel like the vue way to do things.

I'm also running in to trouble trying to $emit back to App.vue, I'm able to pass slidePosition as a prop to the child using:

<router-view :slidePosition="slidePosition" class="view"></router-view>

In my module I try to $emit back using this:

<span v-on:click="increment" v-on:increment="incrementPosition">Start</span> 

methods: {
    increment: function () {
      this.slidePosition += 10
      this.$emit('increment')
    }
  }

This is based off this SO answer vuejs update parent data from child component. Transitioning between slides using the router would be a far neater solution.

Or do I not even need to use the router? do I just use transition-groups? https://v2.vuejs.org/v2/guide/transitions.html#List-Transitions

1 Answer 1

1

I found a really simple solution based on this demo http://matthiashager.com/blog/image-slider-vuejs-tutorial

Rather than use v-for I just change the slide content by incrementing my slidePosition which I then use to call each item within my slide object. As a simple example, say my slides object was this:

slides: [
    {title: 'Slide One'},
    {title: 'Slide Two'},
    {title: 'Slide Three'},
    {title: 'Slide Four'}
  ]

and within data I've set slidePosition: 0

I can then increment the position using a button

<button v-on:click="incrementPosition">Next</button>

then within my methods:

incrementPosition: function () {
  this.slidePosition = this.slidePosition + 1
}

And finally in my template:

<h3>{{slides[slidePosition].title}}</h3>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.