使用AngularJS 1.4.14突出显示ng-repeat值最高的细胞

时间:2017-05-23 12:56:14

标签: javascript angularjs angularjs-ng-repeat

我正在制作仪表板,我想要一些帮助'_'。

我从API获取了一个JSON,我得到一个包含5个元素的数组,每个元素都包含这个结构(我简化了它,但它接近于它)。

{
      "app_id": "id",
      "app_name": "name",
      "users_percentiles": {
        "users_percentile_1": "3408",
        "users_percentile_2": "2356",
        "users_percentile_3": "988",
        "users_percentile_4": "1099",
      }
    }

然后,我使用表格在仪表板中组织这些元素。

    <tbody ng-repeat="dash in dashboard">
            <tr>
                <td>{{dash.app_id}}</td>
                <td>{{dash.app_name}}</td>
                <td ng-repeat="percentile in dash.users_percentiles">
                    {{(percentile}}%
                </td>
           </tr>
    </tbody>

我希望每个ng-repeat突出显示百分位数的最高值(如果两个是等于,则两者都应突出显示)。

我想我应该添加类似的内容:

ng-class="{max : percentile == maxPercentile}"

和一个功能:

     $scope.maxPercentile = -1;
     angular.forEach(percentiles, function (percentile) {
         if (percentile > $scope.maxPercentile) {
             $scope.maxPercentile = percentile;
         }
     });

但我真的不知道在哪里使用这种方法。

我尝试了一个$ watch,但无论我怎么尝试,我都没有让它工作......

1 个答案:

答案 0 :(得分:0)

<tbody ng-repeat="dash in dashboard">
            <tr>
                <td>{{dash.app_id}}</td>
                <td ng-init = "maxpercentile = getMaxPercentile(dash.users_percentiles)">{{dash.app_name}}</td>

                <td ng-class="{max : percentile === maxpercentile}"
                  ng-repeat="percentile in dash.users_percentiles">
                    {{percentile}}%
                </td>

           </tr>
    </tbody>



$scope.getMaxPercentile = function(percentiles){
         var maxPercentile = -1;
         angular.forEach(percentiles, function (percentile) {
             if (percentile > $scope.maxPercentile) {
                 maxPercentile = percentile;
             }
         });
         return maxPercentile;
    }