Vue 1.x / 2.x:从$ route对象获取vue-router路径URL

众所周知,我们可以vue-route用来包装一些路线。

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

在vue2中:

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

现在,我想显示供用户复制的链接URL,所以我想知道是否有办法从路由对象返回绝对路径URL?看来文档没有提及。

例如,我想要:

<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>

有这种方法吗?

以下是Vue#1.0解决方案:

传递路线对象,例如:

const route = {name: 'route_name', params: {...}, query: {...}}

方法:vm.$router.stringifyPath返回网址路径。

然后,我们可以使用该路径生成href网址。

但是我们还需要知道路由器系统模式是什么,所以:

export default {
  methods: {
    getUrlFromRoute(route) {
      const vm = this;
      let path = vm.$router.stringifyPath(route);
      if (vm.$router.mode === 'hash') {
        if (vm.$router.history.hashbang) {
          path = '!' + path;
        }
        path = '#' + path;
      }
      // finally we add the absolute prefix before that
      if (path[0] === '#') {
        // hash mode join
        path = location.origin + location.pathname 
             + (location.query||'') + path;
      } else if(path[0] === '/') {
        // absolute path
        path = location.origin + path;
      } else {
        // relative path
        path = location.origin + location.pathname.replace(/\/[^\/]+$/, '/') + path;
      }
      return path;
    }
  }
};

现在,我们可以自由地共享指向其他地方的链接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Vue 2:vue-router-3.x 没有从 App.vue 重定向/推送

Vue 2:vue-router-3.x 没有从 App.vue 重定向/推送

v-if 行为不同:从 vue 项目 1.x 到 2.x 迁移

Vue.js 1.x与Vue.js 2.x表呈现和字段焦点

如何使用Vue js 2.x指令而不是vue js 1.x按标题过滤帖子

计算1 +1!/ X + 2!/ X ^ 2 +…+ N!/ X ^ N

如果输入是:y = 1(x ^ 3)+0.05(x ^ 2)-2(x ^ 1)-1如何从此std :: string获取数字?

从由reduce_rational_inequalities([[-3 <2 * x + 1]],x)给定的And对象中提取值。例如(And <-2 <x,x <oo)

在Haskell中计算`[[1,x ^ 1,x ^ 2,...,x ^ n]`

获取设备图像比例(例如@ 1x,@ 2x和@ 3x)

Vue2.x中伪元素内容的动态样式

带有Bootstrap 5的Vue.js(2.x)

在Java中创建列表[xn,x-n + 1,...,x,x + 1,x + 2,... x + n]

计算1 ^ X + 2 ^ X + ... + N ^ X mod 1000000007

为什么x in(1,2,3):比x == 1或x == 2或x == 3快?

将 x => array.Contains(x) 表达式转换为 x=> x == 1 || x==2

Google脚本:获取第n个长度的数组[[x],[y]]以返回x / y值数组[[x1,y1],[x2,y2]等)

准确的sqrt(1 +(x / 2)^ 2)+ x / 2

Inkscape 1.x从何处获取路径设置?

屏蔽Y数组以仅获取X1 == X2的值

如何创建这个序列 "x-^-1" "x-^-1" "x-^-1" "x-^-1" "x-^-2" "x-^-2" "x- ^-2" "x-^-3" "x-^-3" "x-^-4" 在 R 中?

x上(1/2)*(xy)^ 2的微分是x-y

如何使用 src(裁剪)编辑 javascript 图像对象的 x1 y1 x2 y2

使用Nuxt JS / Vue JS从对象生成“ X”页数?

cocos2d-x中文件路径的获取方法

x + = ++ x等效于x = 2x + 1:为什么?

循环(1 + x + x ** 2 + x ** 3 + x ** 4 .... n)不起作用

如何在Yii 1.x中获取当前URL?

在x = 1中,x和1都是对象吗?