如何使用$ route和$ routeParams更新角度js中的URL?

时间:2012-10-09 09:46:01

标签: javascript angularjs

如何重定向或更新网址?我找不到任何关于此的好文件。基本上,我想要做的是动态更改$ routeParams并使用新值更新url。

我的代码如下所示:

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);
    }

3 个答案:

答案 0 :(得分:23)

在阅读了我的回答评论之后,我想对于这个案例可能不是正确的答案。在使用此解决方案之前,请阅读评论和其他答案。我不再使用Angular,所以我觉得没有资格回答。

我在下面未修改原始答案:

您正在正确地更改位置,但AngularJS没有意识到它已经改变了。 您可以使用范围'$ apply'解决问题,如下所示:

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

或者像这样:

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

请参阅$ apply documentation here http://docs.angularjs.org/api/ng.$rootScope.Scope

答案 1 :(得分:3)

您可能希望尝试使用原生浏览器对象$window.location.href,而不是http://docs.angularjs.org/guide/dev_guide.services.$location(在Caveats部分中)。

答案 2 :(得分:2)

你应该使用https://angular-ui.github.io/

UI-路由器

使用时你可以做...

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

比内置路由服务

好得多

投票最多的答案令人担忧!