2015-12-14 201 views
4

我有一個項目列表。當用戶點擊一個項目時,用戶將被帶到項目詳細信息頁面。將值傳遞給路由

我想將包含項目詳細信息(如項目的圖像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

回答

9

好了,所以我想出了一個辦法來實現的東西更接近我想要的東西:

目的:將數據傳遞到路由,而不需要在地址欄中揭露他們。

比方說,我們有一個用戶列表,我們希望將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