Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vue 1.x/2.x: Get vue-router path url from a $route object

As we know, we can use vue-route to wrap some route paths.

<!-- vue 1.x -->
<a v-link="{name: 'route_name', params: {id: 1}}"></a>

And in vue2:

<!-- vue 2.x -->
<router-link :to="{name: 'route_name', params: {id: 1}}"></router-link>

And now, I want to display a link url for the user to copy, so I wonder if there is a way to return the absolute path url from a route object? It seemed the docs did not mention that.

For example, I want:

<template>
  <label>Copy the address</label>
  <input value="url" />
</template>

<script>
  export default {
    computed: {
      url() {
        const route = {name: 'route_name', params: {id: 1}};
        // !! The bellow shows what I may want.
        return this.$router.getLink(route);
      },
    }.
  };
</script>

Is there such a method?

like image 942
Alfred Huang Avatar asked Dec 08 '16 09:12

Alfred Huang


2 Answers

For future people looking to do this

I believe this is the Vue 2.x way

var path = this.$router.resolve({name: 'SomePath', params: {id: 1}}).href

then if you want the full url you would do

var fullUrl = window.location.origin + "/" + path
like image 108
Dan Avatar answered Nov 01 '22 12:11

Dan


In Vue 2.0 maybe you can try my way: this.$route.path can get the URL path without domain. For example: http://localhost:8000/#/reg only gets the /reg part; the domain part you can get it easily outside the VueRouter. BTW: after creating const router = new VueRouter ..., you can get the URL by using router.history.current.path;. This method can get the URL like /reg too.

like image 3
xxxx Avatar answered Nov 01 '22 11:11

xxxx