自定义URL的AngularJS location.path

时间:2016-06-24 06:28:45

标签: javascript angularjs url

Ctrl代码:

$scope.$on('$locationChangeStart', function () {

var o1 = $location.path();
var o2 = '/login';
var o3 = '/password-recovery';

if(o1.match(o2)){

  $scope.loginContainer= function() {
  return true;
};
});

HTML

<div class="container" ng-show="loginContainer()">
 <div ui-view></div>
</div>

当网址与http://localhost/angapp/#/login匹配时代码有效但现在我的管理网址如下所示

http://localhost/angapp/#/admin/users
http://localhost/angapp/#/admin/usersGrp
http://localhost/angapp/#/admin/XYX

我需要使用var o4 = '/admin/';,这样才能使用以admin开头的任何网址,后跟moduleName并相应地显示html。

如何使用location.path()来匹配管理员网址和同时显示/隐藏div?

1 个答案:

答案 0 :(得分:0)

一个非常简单的答案,但您可以检查网址中是否包含关键字“admin”,并设置一个布尔变量来显示或隐藏div。

例如:

    if ($location.absUrl().split('?')[0].match('admin')) {
        $scope.showDiv = true;
     } else {    
        $scope.showDiv = false;
    }

并且div可以是

<div ng-show="showDiv"></div>

<div ng-hide="showDiv"></div>

但是,如果您想要安全性,依赖于url是不正确的方法,您可能想要查看不同的身份验证和授权方式,您可能会发现一些有用的链接

  1. https://www.sitepoint.com/implementing-authentication-angular-applications/
  2. http://www.stefanoscerra.it/permission-based-auth-system-in-angularjs/