2015-12-14 1 views
4

У меня есть список предметов. Когда пользователь нажимает на элемент, пользователь переходит на страницу сведений о деталях.Значения прохода к маршруту

Я хочу передать объект, содержащий информацию о деталях (например, URL изображения элемента). Однако я не хочу раскрывать его в URL-адресах маршрутов.

Если бы был способ сделать что-то вроде <a route-href="route: details; settings.bind({url: item.url})">${item.name}</a>, это было бы золотом.

Я видел, что свойства могут быть переданы по маршруту, если они определены в конфигурации маршрута. Однако я не знаю, как изменить это из шаблона. Другой способ может заключаться в том, чтобы определить одноэлемент и сохранить там значения и ввести объект в маршрут назначения.

Есть ли способ передать значения маршрутам из вида (например, угловые ui-routers param)?

+0

Я думаю, что вы должны получить это «URL изображения» внутри 'activate' методы показов модели –

+1

Я не пробовал это, но вы смотрели здесь? https://github.com/aurelia/documentation/blob/master/English/docs.md#generating-route-urls На основе документов это похоже на то, что это может добавить к URL-адресу, но я не понимаю его , У них есть что-то вроде этого: ${user.name} peinearydevelopment

+0

Посмотрите раздел «Маршрутизация документов» http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.0.3/doc/article/cheat-sheet – 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

Можете ли вы объяснить немного больше о том, что делает эта строка? 'let userprofile = this.router.routes.find (x => x.name === 'userprofile');' – Danny

+0

@ Danny это работает? он выдает ошибку ** маршруты неопределенного ** – sibi

+0

Мне нужно передать массив значений через маршрутизатор @Danny – sibi