我的AngularJS应用程序中有以下路由,在其中将每个路由的权限级别保存在数组中,如下面的代码所示。然后,使用以下代码检查当前登录的用户是否具有与要加载的路由相匹配的权限级别,但是即使登录的用户权限与plevel数组中的其中一个匹配,我也始终得到结果-1。有人可以检查我的代码并告诉我我到底在做什么错以及如何解决它吗?谢谢。

       $routeProvider.when('/clients/new-invoice',
        {     templateUrl: 'templates/new-invoice.html',
              controller: 'InvoicesController',
              title: 'New Invoice',
              data: {
                 auth: true,
                 plevel: [5, 6, 8]
              }
        });


 $rootScope.$on("$routeChangeStart", function(event, next, current) {

      var CContent = $.cookie('UCookie');

      console.log('User - permission match : ' + $.inArray(CContent, next.data. plevel) );
  });

最佳答案

$.inArray使用严格相等,您正在将字符串与不严格相等的整数(5 === "5" //returns false)进行比较,即-1。您应该首先将CContent转换为这样的int:

CContent = parseInt($.cookie('UCookie'), 10);

09-18 10:28