2015-02-26 2 views
0

Я ищу замену местоположения AngularJS $, которая позволяет мне отображать параметры URL более гибкими.

Например, у меня есть две корневые страницы map и blog и некоторые параметры для страницы карты. Теперь, как он выглядит в угловом:

example.com/#!/map?id=1234567&view=12,43.5,55.5 

Я хочу, чтобы выбросить ? и & мусора и получить URL, как этого

example.com/#!/map/1234567/view/12/43.5/55.5 

example.com/#!/map/1234567 
view is an optional parameter 

example.com/#!/map/1234567/details 
details is an optional flag 

Но я все равно хочу использовать $location.search(view, '12,43.5,55.5') или $location.search(id, '1234567') или что-то подобное.

Можно ли изменить Угловое $location, чтобы получить такое поведение или есть какие-либо пригодные для использования альтернативы?

+0

Не можете вы достичь такого поведения, используя маршрутизацию angularjs'? – Kludge

+0

Я так не думаю, из. Я могу установить '/ map/1234567/view/12/43.5/55.5' в качестве страницы, но очень неудобно читать параметры. – dkiselev

ответ

0

Вы можете использовать angular ui-router или использовать маршрутизацию angularjs по умолчанию, как this:

.when('/map/:id', {} 
.when('/map/:id/details', {} 
.when('/map/:mapId/view/:id*', {} 

Из documentation: путь

  • могут содержать именованные группы, начинающиеся с двоеточия и заканчивая звезда: например: name *. Все символы охотно хранятся в $ routeParams под заданным именем, когда маршрут совпадает.

Например, маршруты, как /color/:color/largecode/:largecode*\/edit будет соответствовать /color/brown/largecode/code/with/slashes/edit и экстракт:

+0

Похож на то, что мне нужно. Спасибо, Бетти. – dkiselev

0

Вы можете использовать $ state.go() вместо $ location. $ state.go ('pagename');

+0

Но в этом случае я должен сам читать и писать параметры из и в строку pagename, и я ищу лучший способ. – dkiselev

Смежные вопросы