如何获取URL AngularJS的最后一部分

时间:2015-07-22 07:02:46

标签: javascript angularjs url

如何在AngularJS中构建函数来chceck 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

我需要查看我的网址的最后部分:/edit/create/new

网址的长度会有所不同(网址内/的数量。)

我在Angular中有一个控制器来获取网址:

.controller('urlCtrl', ['$scope', '$rootScope', '$location', function ($scope, $rootScope, $location) {

    $rootScope.location = $location;
    $scope.hashPath = "#" + $rootScope.location.path().toString();
}]);

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

我试过这个solution但它没有用(我还检查了这个主题的另一个解决方案,没有发生任何事情)。

有什么想法吗?

修改

或如何仅检查网址中的editcreate

我的解决方案是:

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

2 个答案:

答案 0 :(得分:9)

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

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

您可以使用:window.location.href获取当前网址 然后你只需要在最后一个'/'

之后得到这个部分

答案 1 :(得分:1)

更有效的方法:

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

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

  • pathname将仅保留域名后面的部分网址, 查询前参数
  • split会将网址爆炸成由/分隔的数组
  • slice将为您提供仅包含最后一项的数组
  • [0]将您最后一个项目作为字符串(与 数组)