如何获得url的最后一部分AngularJS

How to get the last part of url AngularJS

本文关键字:一部分 AngularJS 最后 何获得 url      更新时间:2023-09-26

如何在AngularJS中构建函数来检查url的最后一部分?

我的例子:

#/menu1/123/edit

#/menu2/444/create/new

#/menu3/sumbenu1/333/create/new

#/menu4/submenu2/subsubmenu1/subsubsubmenu1/543/edit

问题是:

123 444 333 543是Angular外部生成的ID

我需要检查我的url的最后部分:/edit/create/new

url的长度将不同(url中/的个数)。

我在Angular中有一个控制器来获取url:
.controller('urlCtrl', ['$scope', '$rootScope', '$location', function ($scope, $rootScope, $location) {
    $rootScope.location = $location;
    $scope.hashPath = "#" + $rootScope.location.path().toString();
}]);

我将#字符添加到url中,因为稍后我会将其与JSON进行比较。

我尝试了这个解决方案,但它不起作用(我也检查了这个主题的另一个解决方案,没有发生任何事情)。

任何想法?

编辑:

或者如何检查url内的editcreate ?

我的解决方案是:

var path = $location.path();
var multisearch = path.search(/create|edit|new/);
console.log("multisearch: " + multisearch);

这应该会给你想要的结果:

window.alert(window.location.href.substr(window.location.href.lastIndexOf('/') + 1));

您可以使用:window.location.href获取当前URL然后你只需要得到最后一个'/'之后的部分

更有效率的方法:

location.pathname.split('/').slice(-1)[0]

http://example.com/firstdir/seconddir/thirddir?queryparams#hash;它会给你thirddir

  • pathname将只保留域名和url后面的部分before查询参数
  • split将把url扩展成数组,以/
  • 分隔
  • slice将给你一个只包含最后一项的数组
  • [0]将最后一个项目作为字符串(与项目的项目形成对比)数组)