代码之家  ›  专栏  ›  技术社区  ›  BaronGrivet

VueJS-使用动态数据更新URL

  •  0
  • BaronGrivet  · 技术社区  · 6 年前

    例如,如果我的路由配置是(我不确定语法是否正确):

    routes: [
        {
            path: '/:foo/:bar/:oof/:rab',
            component: App
        }
    

    组件是:

    <script>
    export default {
      name: "App",
      data: function() {
        return {
          foo: 1,
          bar: 2,
          oof: 3,
          rab: 4
        }
      }
    }
    

    那么URL就是 http://www.example.com/#/1/2/3/4

    foo 更改为9999时,URL将自动更新: http://www.example.com/#/9999/2/3/4

    它还将响应用户更改URL,或者通过将URL值加载到数据中来打开具有不同URL的应用程序。

    我认为这将是相对简单的,但在谷歌之后,我完全困惑于正确的方式去做这件事。

    2 回复  |  直到 6 年前
        1
  •  9
  •   Phil    6 年前

    methods: {
      changeFoo (newFoo) {
        // you can set foo but it probably won't matter because you're navigating away
        this.foo = newFoo
        this.$router.push(`/${newFoo}/${this.bar}/${this.oof}/${this.rab}`)
      }
    

    看到了吗 https://router.vuejs.org/guide/essentials/navigation.html


    name your route

    routes: [{
      name: 'home',
      path: '/:foo/:bar/:oof/:rab',
      component: App
    }]
    

    然后你可以用

    this.$router.push({name: 'home', params: this.$data})
    
        2
  •  0
  •   Nico    6 年前

    似乎有两件事你正在努力实现,但我不确定从你的例子,首先在你的理想操作顺序:

    • 从URL获取值

      这可以通过 this.$route.params ,它将是一个包含要查找的值的对象。

    • 基于您的 foo , bar oof , rab

      你可以用 this.$router.push() 为此: vue-router docs