我有一个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
范围内没有,因此dayspan
和compname
会被覆盖。我如何评估rowInit
范围内的ng-repeat
?
答案 0 :(得分:1)
迭代列表并为每行执行计算,将数据添加到行中,然后在标记中显示item.compname和item.dayspan。
$scope.list.forEach(
function(item) {
item.dayspan = someAJAXCall();
item.compname = someCalc();
}
);
请注意,同时加载AJAX调用是有问题的 - 但这不是您问题中提出的问题。