2015-11-12 3 views
1

Я хочу удалить маршрут param из url.Удалить маршрут param из url AngularJS

Мои URLs могут быть http://host.domain/#/events/eventId и http://host.domain/#/user/userId/events/eventId My $ routeProvider устанавливается как '/ событий /:? EVENTID' и 'пользователь /: userId/events /: eventId?'

Когда eventId установлено. Я показываю всплывающее окно. Когда пользователь нажимает кнопку закрытия, я хочу удалить eventId из url. Как я могу это сделать?

p.s. Я искал что-то вроде этого

delete $route.current.params.eventId; 

, но без какого-либо успеха

ответ

0

Вы не можете сделать это с delete. Ключевое слово используется для удаления свойств объектов JavaScript.

Как правило, люди либо просто добавить кнопку, как это:

<button ui-sref="events()">Close</button> 

или они используют $state.go команду:

$state.go("events", { }); 

в такого рода ситуациях, когда events является маршрут без eventId параметра.

0

Я настоятельно рекомендую вам ознакомиться с UI-Router. Он намного более универсален, чем ngRoute, и предлагает все, что делает вышеупомянутый модуль.

Используя это, вы можете определить отдельное состояние, в которое необходимо войти, если нет eventId.

.state("mystate", { 
    url: "/", 
    template: "..." 
}) 
.state("mystate.event", { 
    url: "/:eventId", 
    template: "..." 
    ... 
}); 

URL, как "/321" будет соответствовать состоянию mystate.event, а "/" будет преобразовано в MyState. Если вы хотите нажать на что-нибудь и перейти из одного состояния в другое, вы можете использовать ui-sref.

Чтобы перейти в состояние без каких-либо Params:

ui-sref="targetState"; 

Чтобы перейти в состояние с Params:

ui-sref="targetState({ paramName: param }); 

В вашем случае, вы могли бы иметь что-то вроде:

<div ui-sref="mystate">Click to Close</div> 

И это все, что нужно. This tutorial охватывает основы того, что вам нужно для начала работы с UI-Router, а также вы можете найти советы и рекомендации по одной и той же теме на одном сайте.

EDIT

Вы также можете сделать так, как описано в ответ Мартина.

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