2014-02-04 2 views
0

Я пытаюсь удалить querystring (с токеном приглашения) из URL-адреса без перенаправления страницы.Как вручную изменить историю в angular.js

Так пример URL выглядит следующим образом:

example.com/?invitation=fooo

Я включил нг-маршрутизатор, и я использую hashbang (я не могу использовать режим html5 в нашем проекте) для маршрутов, но этот запрос string является частью основного url (до #), потому что я хочу, чтобы сервер увидел его.

В обычном приложении я бы просто использовать API истории:

history.replaceState(null, null, '/');

Но в применении с Угловым это вызывает ошибку:

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

Я не могу использовать $ местоположения. путь, потому что AFAIK позволяет изменять только угловую маршрутизируемую часть URL-адреса, т. е. часть после # в моем случае. $ location.search даже не видит.

Знаете ли вы, как удалить запрос с url с угловым без перенаправления страницы?

ответ

1

В Угловом, все изменения URL должны происходить через службу $location. Вы можете очистить строку запроса, вызвав метод $location.search с пустым объектом: $location.search({}). Кроме того, ознакомьтесь с руководством по использованию службы $location. here

+0

Как я уже сказал, эта строка запроса не находится в маршрутизируемой части, потому что она до hashbang, и я не использую html5mode. $ location.search не видит:/и не может его изменить. – kriskodzi

+0

Что такое «маршрутизируемая» часть? '$ location' прекрасно в состоянии изменить URL-адреса, например' http: //www.foo.com? bar = 23 # baz'. – khellang

+0

Как я в режиме hashbang, пример url может выглядеть так: 'www.example.com/?invitation=fooo #!/Base/path? Foo = bar # baz' по маршрутизируемой части Я имею в виду это после #! – kriskodzi

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