inca / voie

[UNMAINTAINED] Simple Vue.js router / layout manager
141 stars 7 forks source link

nested views not being cleaned up on transition #12

Closed airtonix closed 8 years ago

airtonix commented 8 years ago

I started creating a example of this problem on jsbin, however I need a CDN build of your library to complete it.

Tried using the umd module transform of babel, but no luck in resulting a single file i could use on something like jsfiddle/jsbin/codepen.

https://jsfiddle.net/z6rpybbd/7/

airtonix commented 8 years ago

appears there may be a limit to how many nested vues can contain v-view.

I just reduced to down from this:

root: (template with v-view)
  root.auction: (template with v-view)
    root.auction.create: (template with v-view)
      root.auction.create.one: (template)
      root.auction.create.two: (template)
      ...
    root.auction.detail: (template)
  root.auth: (template)

to this:

root: (template with v-view)
  root.create: (template with v-view)
    root.create.one: (template)
    root.create.two: (template)
    ...
  root.detail: (template)
  root.auth: (template)

Although I'm not sure if this matters, but coming from Angular, I wrapped my view templates in one single parent html element:

<template>
  <div>
    <h1>Login</h1>
    <form> ... </form>
  </div>
</template>
inca commented 8 years ago

Just to clarify, does Vue <template> contain multiple child elements in your case? If so, then it falls under fragment instance category and will not work properly (in other words, you should always have a single-element components).

airtonix commented 8 years ago

Yeah even after ensuring the <template> tags in my state views had only one child element, I found that moving from any state under root.auction.create.* to any other state would result in the source state markup not being cleaned up.

Perhaps karma tests that explore this may shed light on what is going on?

inca commented 8 years ago

So do you think depth is the issue?

Also, could you please provide some debugging info about this? Enable debug logging by typing localStorage.debug = 'voie*', then refresh the page, go to one of root.auction.create descendants and perform navigation outside. Then paste logs or SS here so that we could see what's actually going on there. Thanks!

inca commented 8 years ago

Still don't know what the issue is. Closing this, please feel free to reopen when more information is gathered.

airtonix commented 8 years ago

It was because my root element was a fragment.

so the rule is: