每行的ng-repeat运行功能?

时间:2015-12-03 21:48:11

标签: javascript angularjs

我有一个ng-repeat,我需要运行一个函数来为每一行获取一些额外的数据/少量计算。

像这样的东西

<div id="complaintstable">
            <table>                  
                <tr ui-sref="complaints.details({ id: item.Id })" ng-repeat="item in list" class="item" ng-class-odd="'odd'" ng-class-even="'even'" ng-init="rowInit(item)">
                    <td>
                        {{item.ConsumerName}}
                    </td>
                    <td>
                        {{dayspan}}
                    </td>
                    <td>
                        {{item.ConsumerCity}}
                    </td>
                    <td>
                        {{item.Agent.First_Name}} {{item.Agent.Last_Name}}
                    </td>
                    <td>
                        {{compname}}
                    </td>
                    <td>
                        {{item.DateOpenedDisplay}}
                    </td>
                </tr>
            </table>
        </div>

然后在指令控制器

   $scope.rowInit = function (row) {
                  $scope.dayspan = someAJAXCall();
                  $scope.compname = someCalculation();
                  console.log("here");
              }

显然,问题是rowInit在控制器范围内得到评估而在ng-repeat范围内没有,因此dayspancompname会被覆盖。我如何评估rowInit范围内的ng-repeat

1 个答案:

答案 0 :(得分:1)

迭代列表并为每行执行计算,将数据添加到行中,然后在标记中显示item.compname和item.dayspan。

$scope.list.forEach(
    function(item) {
      item.dayspan = someAJAXCall();
      item.compname = someCalc();
    }
);

请注意,同时加载AJAX调用是有问题的 - 但这不是您问题中提出的问题。