AngularJs $location.path with full url



如果用户在模态中单击ok,我想将其路由到一个url。在我的控制器中,我收到类似的URL

var newUrl = http://localhost:3000/#/dashboard
var newUrl = http://localhost:3000/#/users

作为变量。

如果我使用

$location.path(newUrl);

它不起作用。我也试过

$location.url(newUrl);

但是我的URL是这样编码的。

http://localhost:3000/#/#%2Fdashboard

有没有办法只获取url的路径?

编辑

此代码是服务的一部分。用户在表单中进行一些输入,然后单击另一个链接,例如菜单中的链接。然后出现一个弹出窗口,要求他跳过表单更改。如果他点击"是",我会得到请求的网址。这是我在服务器上的开发环境,当然它将是另一个url。所以我不能只使用

$location.path("/users")

例如

我在处理Angular preventDefault$locationChangeStart事件时遇到了同样的问题,强制保存,并且只有在成功时才重定向。我在控制器的主体中定义了以下功能:

var baseLen = $location.absUrl().length - $location.url().length;
function getPath(fullUrl) { 
    return fullUrl.substring(baseLen);
}

这似乎不是一个干净的解决方案,但作为一种变通办法,它确实起到了作用。如果你不知道你的URL指向同一个网站,RegEx可能对你更有效。

您可以使用$location.absUrl()

请参阅官方文档:在此处输入链接描述

此方法仅为getter。

返回完整的url表示,其中所有分段都根据RFC 3986中指定的规则进行编码。

我可以提供一个不同的解决方案吗:

    $scope.$on('$locationChangeStart', function(e) {
      if (meetsTheRequirementsToLeave()) {
        return;
      }
      var newPath = $location.path();
      e.preventDefault();
      checkIfUserWantsToLeave().then(function() {
        $location.path(newPath);
      });
    });

在该事件中,$location.path()返回新路径。

最新更新