Navigation to same route fails
How2reproduce:
1. Click on Foo
2. Click Foo-3
3. Scroll up
4. Repeat step 2
Result:
Screen stays at the same position and doesnt scroll to Foo-3
by ParachuteKadse
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.0/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-router/2.6.0/vue-router.js"></script>
<div id="app-root">
<h1>Issue Reproduction</h1>
<router-link to="/foo">Foo</router-link>
<h1>Nav</h1>
<router-view></router-view>
</div>
<script type="text/x-template" id="foo-template">
<section>
<router-link :to="{path: '/foo', hash: 'foo-1'}">Foo-1</router-link>
<router-link :to="{path: '/foo', hash: 'foo-2'}">Foo-2</router-link>
<router-link :to="{path: '/foo', hash: 'foo-3'}">Foo-3</router-link>
<h2 id="foo-1">Foo-1</h2>
<p>???</p>
<p>???</p>
<p>???</p>
<p>???</p>
<p>???</p>
<h2 id="foo-2">Foo-2</h2>
<p>???</p>
<p>???</p>
<p>???</p>
<p>???</p>
<p>???</p>
<h2 id="foo-3">Foo-3</h2>
<p>???</p>
<p>???</p>
<p>???</p>
<p>???</p>
<p>???</p>
</section>
</script>
<script>
</script>
CSS
p {
margin: 100px 0;
}
JavaScript
var FooComponent = {
template: '#foo-template'
};
var routes = [{
path: '/foo',
component: FooComponent
}];
var scrollBehavior = function(to, from, savedPosition) {
if (to.hash) {
return {
selector: to.hash
}
} else {
return {
x: 0,
y: 0
}
}
};
var router = new VueRouter({
routes: routes,
scrollBehavior: scrollBehavior,
mode: 'history'
});
var app = new Vue({
el: '#app-root',
router: router
});