我有一个项目列表。当用户点击某个项目时,用户将被带到项目详细信息页面。
我想将包含项目详细信息(如项目的图像 URL)的对象传递给路由。但是,我不想在路由网址中公开它。
如果有办法做类似 <a route-href="route: details; settings.bind({url: item.url})">${item.name}</a>
的事情那将是黄金。
我发现如果在路由配置中定义了属性,则可以将属性传递给路由。但是,我不知道如何从模板中更改它。另一种方法可能是定义一个单例并将值存储在那里并将对象注入(inject)到目标路由。
有没有办法将值传递给 View 中的路由(例如 Angular ui-routers param
对象)?
最佳答案
好吧,我找到了一种方法来实现更接近我想要的东西:
目标:将数据传递到路线,而不在地址栏中暴露它们。
假设我们有一个用户列表,我们希望将用户名
传递到用户的个人资料页面,而不将其定义为查询参数。
在 View 模型中,首先注入(inject)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
}
关于aurelia - 将值传递给路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273569/