如何在 Vue-router 中使用 addroutes 方法?

Posted

技术标签:

【中文标题】如何在 Vue-router 中使用 addroutes 方法?【英文标题】:How to use addroutes method in Vue-router? 【发布时间】:2018-03-02 15:13:09 【问题描述】:

我创建了一个函数“addroute()”来动态添加路由,但它不起作用(路由器没有改变)。 这是使用 addRoutes 方法的正确方法吗?我从教程中学到了这一点。 如果没有,请给我一个正确的例子,谢谢!

...
const Bar=
    template:'#panels',
    data()
        return title:'badss'          
    
        ;
const Foo=
    template:"#panels",
        data()
        return title:'hell'
    
        ;


const router = new VueRouter(
  routes:[
      path:'/foo',component:Foo,
      path:'/bar',component:Bar
  ]
);

new Vue(
    el:'#root',
    router:router,
    data:
    stats:stats
,
methods: 
    //
,

);

function addroute()//watch here
    router.addRoutes([path:'/ioio',component:template:'#panels'])

setInterval("addroute()", 2000)//watch here
...

【问题讨论】:

你在寻找 setTimeout() 吗? 【参考方案1】:

您尝试更改的路由器实例已添加到您拥有的 Vue 实例中。更改该路由器不会更新 Vue 实例。您要做的是调用已添加到 Vue 实例的路由器实例。可以在以下位置找到完整的工作示例:Add routes in vue-router

因此,您可以使用this.$router 在 Vue 实例中的方法内访问路由器。然后,您可以使用.addRoutes 功能添加您想要添加的所需路由。

在小提琴中,你可以看到我已经在 html 中添加了 ioio 链接,但是它还不起作用(单击它将导致 <span>Default</span> 被添加到 <router-view></router-view> 中)。单击按钮时,您将添加一条新路线。添加路线后,我添加了this.$router.push('/ioio'); 以强制更新<router-view></router-view>。如果删除这行代码,<router-view></router-view> 将显示最后显示的元素(在大多数情况下这是可取的),再次单击 ioio 按钮将显示新创建的路线。

希望这会有所帮助!

【讨论】:

嘿 Ivor,我使用过这种方法,但似乎无法重新加载页面并让组件保持不变,对此有什么想法吗? 这在很大程度上取决于您添加附加路线的方式。我怀疑您从服务器检索路由。如果此人已获得对这条新路线的访问权限,您可能应该更改他们在该级别的访问权限,并确保在重新加载时,他们最初获得该路线。但是,如果这是一个依赖于状态的临时链接(或者您正在离线 Web 应用程序中工作),如果您想保留路由,则必须从 localStorage 或 IndexedDb 保存和检索路由。如果您使用的是 Vuex,则有一些选项可以将其保存到 localStorage。 我现在的做法是说当加载 about 组件时,向路由器添加一个新路由,然后转到那个新路由,从 about => 导航就可以了,但是在页面刷新时,它消失了,我确实尝试将它存储在本地存储中,但我丢失了对它无法解析的对象的上下文的引用。 检查这个小提琴:jsfiddle.net/ivor/ptxa3cLf。添加路由时,它还会将路由推送到 routes 变量并将其放入本地存储中。由于 localstorage 不适用于对象,因此您需要在写入时进行字符串化,并在检索时对其进行解析。如果您有任何问题,请告诉我!

以上是关于如何在 Vue-router 中使用 addroutes 方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vue-router 中使用 addroutes 方法?

如何在 Vuex 模块 Actions 中使用 vue-router?

如何仅在子组件中使用 vue-router?

vue-router如何去中心化

简单了解如何使用vue-router和vue-resource

如何在 vuex 商店中使用 vue-resource ($http) 和 vue-router ($route)?