Aurelia 将值传递给路由

Aurelia 将值传递给路由,aurelia,Aurelia,我有一份物品清单。当用户单击某个项目时,用户将进入项目详细信息页面 我想将包含项目详细信息(如项目的图像URL)的对象传递给路由。但是,我不想在routes url中公开它 如果有一种像这样的方法,那就是黄金 我已经看到,如果在路由配置中定义了属性,则可以将属性传递给路由。但是,我不知道如何从模板中更改它。另一种方法是定义一个单例并将值存储在那里,然后将对象注入目标路由 是否有一种方法可以将值从视图传递到路由(如angular ui routersparamobject)?好的,所以我找到了一种

我有一份物品清单。当用户单击某个项目时,用户将进入项目详细信息页面

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

如果有一种像
这样的方法,那就是黄金

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


是否有一种方法可以将值从视图传递到路由(如angular ui routers
param
object)?

好的,所以我找到了一种方法来实现更接近我想要的东西:

目标:将数据传递到路由,而不在位置栏中显示它们

比方说,我们有一个用户列表,我们希望将
用户名
传递到用户的配置文件页面,而不将其定义为查询参数

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

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
}

对于那些@Sayem的答案不起作用的情况,您可以将任何其他数据(甚至对象)放入如下设置属性:

let editEmployeeRoute = this.router.routes.find(x => x.name === 'employees/edit');
editEmployeeRoute.settings.editObject = employeeToEdit;
this.router.navigateToRoute('employees/edit', {id: employeeToEdit.id});
因此editObject将在另一端传递:

activate(params, routeConfig, navigationInstruction) {
    console.log(params, routeConfig, navigationInstruction);
    this.editId = params.id;
    this.editObject = routeConfig.settings.editObject;
}

希望这能帮助其他遇到和我一样问题的人。TG.

我想你应该在视图模型的
activate
方法中找到这个“图像url”。我没有试过,但是你看过这里吗?根据文档,看起来它可能会将其添加到url中,但我不清楚。它们有这样的功能:查看文档的路由部分,目的是不将它们作为url参数传递。在将对象传递到另一个路由时,我不希望它们在url中公开。你能解释一下这行的作用吗
let userprofile=this.router.routes.find(x=>x.name==='userprofile')@Danny这有用吗?它抛出未定义的错误路由,需要通过路由器传递一个值数组@Danny@sibi它正在工作,但问题是
userprofile.name
是一个字符串,不能包含除字符串以外的任何内容。如果要传递数组,则有另一种解决方案。还有,您遇到的错误,我猜您没有注入它并将其存储到类中???@danny好的,保留该数组,对于字符串,我导入并注入了路由器,并且
this.theRouter.navigate()
工作正常。根据上面的ans,routes
let userprofile=this.router.routes.find(x=>x.name==='userprofile')怎么样在这一行中,routes会抛出错误,因为routes是未定义的。我对Aurelia很陌生,所以我不能说@sayem最初的问题和答案是从2015/2016年开始的,但在阅读了Aurelia文档和论坛之后,我认为您的解决方案现在是正确的。