Mythriel
Mythriel

Reputation: 1380

How do I update the url in angular js with $route and $routeParams?

How can I redirect or update the url? I cannot find any good documentation regarding this. Basically, what I want to do is to change the $routeParams dynamically and update the url with the new value.

My code looks like this:

if ($routeParams.time) {
        var url;
        $routeParams.time = encodeURIComponent(value);
        url = '/' + $routeParams.time + '/' + 'marketing/networks';
        $location.path(url);
    } else {
        $routeParams.time = encodeURIComponent(value);
        url =  '/' + $routeParams.time + $location.path();
        $location.path(url);
    }

Upvotes: 12

Views: 31344

Answers (3)

Robert
Robert

Reputation: 32765

After reading the comments to my answer, I think maybe is not the right answer for this case. Please, before using this solution, read the comments and other answers. I'm not using Angular anymore so I don't feel qualified for answering.

I leave the original answer unmodified below:

You are changing the location properly but AngularJS it's not realizing that it changed. You can solve the problem using the method '$apply' of your scope like this:

$location.path( url );
$scope.$apply();

Or like this:

$scope.$apply( $location.path( url ) );

See $apply documentation here http://docs.angularjs.org/api/ng.$rootScope.Scope

Upvotes: 23

danday74
danday74

Reputation: 57036

you should use https://angular-ui.github.io/

ui-router

when using this you can do ...

state.go("route-name", {id:4});

much better than the built in routing service

The most voted answer is worrying!

Upvotes: 2

Tosh
Tosh

Reputation: 36030

You might want to try native browser object $window.location.href instead, according to http://docs.angularjs.org/guide/dev_guide.services.$location (in Caveats section).

Upvotes: 3

Related Questions