如何循环多个查询参数并与ng-if一起使用?

时间:2018-01-18 19:40:03

标签: javascript angularjs

使用AngularJS我将用户发送到一个页面,该页面具有基于他们在上一页上选择的员工的查询字符串。我正在拆分查询字符串以记录变量$scope.splitusers,该变量记录了user.ID的数组,例如[" 14"," 21"]已通过来自上一页。我想使用ng-if来自DOM的user.ID等于来自JS的用户。在HTML中,我想使用ng-if并在user.ID == splitusers时显示用户的信息。现在,当查询字符串中只有一个user.ID,但当选择了多个用户时,它会被破坏。

以下是目前已损坏的HTML:

<div ng-app="myApp">
  <div ng-controller="MainCtrl">
    <div class="ProfileSheet" ng-repeat="user in users" ng-if="user.ID == splitusers">
      <table id="Profile">
        <tr>
          <th>User</th>
          <td>{{user.Title}}</td>
        </tr>
      </table>
    </div>
  </div>
</div>

这是JS:

var app = angular.module('myApp', ['ngSanitize']);
app.controller('MainCtrl', function($scope, $http, $q){
    var getQueryString = function (field, url){
        var href = url ? url : window.location.href;
        var reg = new RegExp('[?&]' + field + '=([^&#]*)', 'i');
        var string = reg.exec(href);
        return string ? string[1] : null;
    }
    $scope.selectedusers = getQueryString('users', window.location.href)
    $scope.splitusers = $scope.selectedusers.split(',')
});

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

<div class="ProfileSheet" ng-repeat="user in users" ng-if="splitusers.includes(user.ID)">

但更好的选择是过滤控制器内的users数组,甚至是ng-repeat指令内部。