Angular - how to avoid adding history when changing search?

I have a property on a page that I would like to reflect by url on a specific page.

I installed reloadOnSearch:false

for this page.

when the page loads it is read local storage

and if this property was stored it will add its value to the search. However, this adds a history entry, so I click back

, I get the url without those search parameters.

I need to avoid double back clicks.

Here is the snippet I made (I will try to run it on plunkr)

my HTML file (snippet.html)

<html ng-app="snippet">
        <script src="bower_components/angular/angular.js"></script>
        <script src="bower_components/angular-route/angular-route.js"></script>
        <script src="snippet.js"></script>

    <body ng-view="">




my JavaScript file (snippet.js)

angular.module('snippet',['ngRoute']).config(function( $routeProvider ){
    $routeProvider.when('/so', {
        'template' : 'this is my template',
        'controller' : 'SnippetCtrl',
    }).when('/first', {
        'template' : '<a href="snippet.html#/so">go here</a>'
        redirectTo : '/first'
        // redirectTo: '/public/session/login'

angular.module('snippet').controller('SnippetCtrl', function($location, $scope){

    $ = 'guy';




  • go to snippet.html
  • the location should change to #/first

  • click link
  • the location should change to #/so

    and then immediately to#/so?hello=world

  • click
  • changing location to #/so

    - I would like to avoid this

source to share

1 answer

After 3 days of trial and error and 10 minutes after I posted this question, I found the answer ...

Instead of using $ (...), I have to do $ (...). replace ()

found my own q / a after 3.5 years. #gottaLoveStackoverflow .. it seems like in later versions of angular I had to split calls.



Their chain creates an error.
And for the record, according to the angular documentation

When called, all changes to $ location during the current $ digest will overwrite the current history record instead of adding a new one.

Therefore, use with caution.



All Articles