AngularJs $ location.path,带有完整的URL

 IQBB_LongGang 发布于 2023-02-13 17:15

如果用户在模态中单击"确定",我想将用户路由到网址.在我的控制器中,我收到的网址就像

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

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

作为变量.

如果我然后使用

$location.path(newUrl);

这是行不通的.我也试过了

$location.url(newUrl);

但是我的URL被编码为这样.

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

有没有办法只获得网址的路径?

编辑

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

$location.path("/users")

例如

3 个回答
  • 我可以提供不同的解决方案:

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

    在此事件中$location.path()返回新路径.

    2023-02-13 17:18 回答
  • 我在遇到Angular preventDefault $ locationChangeStart事件时遇到了同样的问题,强行保存,并且只在成功时重定向.我在控制器的主体中定义了以下函数:

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

    它似乎不是一个干净的解决方案,但作为一种解决方案,它可以完成这项工作.如果您不知道您的网址指向同一网站,则RegEx可能会更适合您.

    2023-02-13 17:18 回答
  • 你可以用$location.absUrl().

    请参阅官方文档:在此处输入链接说明

    这种方法只是getter.

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

    2023-02-13 17:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有