Javascript 获得;“数据”;在Vue中重定向路由器

Javascript 获得;“数据”;在Vue中重定向路由器,javascript,vue.js,redirect,vue-router,Javascript,Vue.js,Redirect,Vue Router,我想要实现的是,当访问/self时,它应该首先检查issignedin是否为true,然后获取user.name的值以重定向。这些变量在Vue的data(){…部分中设置。 尽管如此,我还是不知道如何访问数据,因为Vue实例是在我创建路由之后创建的: const路由=[ //... { 路径:“/self”, 重定向:(至)=>{ 如果(app.issignedin){ 返回“/@”+user.name; }否则{ 返回“/登录”; } }, }, ]; 常量路由器=新的VueRouter({

我想要实现的是,当访问
/self
时,它应该首先检查
issignedin
是否为true,然后获取
user.name
的值以重定向。这些变量在Vue的
data(){…
部分中设置。 尽管如此,我还是不知道如何访问数据,因为Vue实例是在我创建路由之后创建的:

const路由=[
//...
{
路径:“/self”,
重定向:(至)=>{
如果(app.issignedin){
返回“/@”+user.name;
}否则{
返回“/登录”;
}
},
},
];
常量路由器=新的VueRouter({
路线,
});
const app=新的Vue({
路由器:路由器,,
数据(){
返回{
伊西涅丁:是的,
用户:{name:“MoPaMo”},
//...
};
},
this
和保存Vue的变量名(
app
)或类似的
this.$parent
都不起作用…:(

非常感谢您的帮助!

Vue Router 3提供了访问安装路由器的应用程序实例的功能,您可以使用该功能访问
app.issignedin

你可以做:

let router=null
常数路由=[
//...
{
路径:“/self”,
重定向:(至)=>{
if(router.app.issignedin){
返回“/@”+user.name;
}否则{
返回“/登录”;
}
},
},
];
路由器=新的VueRouter({
路线,
});
或者,如果您希望保留
router
a
const
,请在
router
声明后使用常规函数,该函数将捕获以下范围内的
router
实例:

const路由=[
//...
{
路径:“/self”,
重定向:重定向如果未签名,
},
];
常量路由器=新的VueRouter({
路线,
});
函数重定向ifnotsignedin(){
if(router.app.issignedin){
返回“/@”+user.name;
}否则{
返回“/登录”;
}
}

在进入前尝试。您基本上需要vue.js中的导航GAURD。请检查,但导航卫士是否存在相同的问题?为什么会这样?您应该恢复系统流。为了访问特定url,首先应显示一些数据。vue将加载
/
,我不明白为什么任何用户会直接不加载ype
/self
要在vue加载之前到达您的路径,请想象一下,它部署在example.com中,带有一个欢迎主页和一个按钮或指向example.com/self的链接,通常web门户就是这样工作的。如果您想要用户数据,则它通常来自带有异步调用的服务器api