将值传递给路由

问题描述:

我有一个项目列表。当用户点击一个项目时,用户将被带到项目详细信息页面。将值传递给路由

我想将包含项目详细信息(如项目的图像URL)的对象传递给路由。但是,我不想在路由网址中公开它。

如果有办法做一些像<a route-href="route: details; settings.bind({url: item.url})">${item.name}</a>这样的事情,那会是黄金。

我已经看到属性可以传递给路由(如果在路由配置中定义的话)。但是,我不知道如何从模板中改变它。另一种方法是定义一个单例并将值存储在那里,并将该对象注入目标路由。

有没有办法将值传递给路由从视图(如角ui路由器param对象)?

+0

我想你应该得到这个“图像URL”的'视图模型 –

+1

我还没有试过这种的activate'方法里面,但你看在这里? https://github.com/aurelia/documentation/blob/master/English/docs.md#generating-route-urls根据文档,它看起来像它可能会添加到该网址,但我不清楚它。他们有这样的内容:${user.name} peinearydevelopment

+0

看看文档的路由部分http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.0.3/doc/article /作弊表 – conradj

好了,所以我想出了一个办法来实现的东西更接近我想要的东西:

目的:将数据传递到路由,而不需要在地址栏中揭露他们。

比方说,我们有一个用户列表,我们希望将username传递给用户的个人资料页面,而不将其定义为查询参数。

在视图模型,首先注入Router,然后将数据添加到目的地路由器:

goToUser(username) { 
    let userprofile = this.router.routes.find(x => x.name === 'userprofile'); 
    userprofile.name = username; 
    this.router.navigateToRoute('userprofile'); 
} 

现在,当路由变化userprofile,你可以activate方法的第二个参数访问路线设置:

activate(params, routeData) { 
    console.log(routeData.name); //user name 
} 
+0

你能解释一下这条线是什么吗? '让userprofile = this.router.routes.find(x => x.name ==='userprofile');' – Danny

+0

@Danny是在工作吗?它会抛出错误**路由的未定义** – sibi

+0

我需要通过路由器@Danny – sibi