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

Myt*_*iel 11 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);
    }
Run Code Online (Sandbox Code Playgroud)

Rob*_*ert 23

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

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

你正在正确地改变位置,但是AngularJS没有意识到它发生了变化.您可以使用范围'$ apply'解决问题,如下所示:

$location.path( url );
$scope.$apply();
Run Code Online (Sandbox Code Playgroud)

或者像这样:

$scope.$apply( $location.path( url ) );
Run Code Online (Sandbox Code Playgroud)

请参阅$ apply documentation http://docs.angularjs.org/api/ng.$ro​​otScope.Scope

  • 您可能会遇到$ apply in progress错误,如果是这样,请参阅:http://stackoverflow.com/questions/18626039/apply-already-in-progress-error,它很容易修复. (3认同)
  • 除非您从非Angular事件接口,否则您不应该需要调用$ apply.使用$ apply时请考虑使用"安全应用"方法:https://coderwall.com/p/ngisma这不是您需要使用申请的情况! (2认同)

Tos*_*osh 3

您可能想尝试本机浏览器对象$window.location.href,根据http://docs.angularjs.org/guide/dev_guide.services.$location(在Caveats部分中)。