VueJS:router.resolve问题

时间:2018-12-10 20:15:49

标签: vue.js vue-router

控制台中显示警告:

  

未提供id参数。

文档提到将使用当前路线:

  

当前默认为当前路线(大多数情况下,您不选择   需要更改此内容)

html代码:

<div id="app">
  <router-link to="/5">/5</router-link>
  <button @click="onClick">Resolve</button>
</div>

js代码:

new Vue({
    el: '#app',

  router: new VueRouter({
    routes: [
        {
        name: 'foo',
        path: '/:id',
        component: {
            template: '<div>Foo <router-view/></div>',
        },
        children: [
            {
            name: 'bar',
            path: 'bar',
            component: {
                template: '<div>Bar</div>'
            }
          }
        ]
      },
    ],
  }),

  methods: {
    onClick() {
      console.log('Omitting current');
        this.$router.resolve({ name: 'bar' });
      console.log('Including current');
        this.$router.resolve({ name: 'bar' }, this.$route);
    }
  }
});

1 个答案:

答案 0 :(得分:1)

我知道这是过期的,但我会分享发现的结果。

调用$router.resolve()时,它将使用vue-router/src/util/location.js的{​​{1}}来获取normalizeLocation()对象。

您会看到Location选项仅用于解析相对路径。

在新current?中包含current.params的唯一情况是给定的Location是相对的,并且本身包含RawLocation