我想在ng-repeat
上运行一个函数,该函数在我的JSON中获取Qprogress对象的值并将其转换为百分比。我有正确写入的功能,但我无法弄清楚如何启动它。我尝试将它包装在范围内的forEach中,然后使用范围作为要修改的元素的ng模型,但它不起作用。 这里的HTML:如何在ng-repeat内部启动forEach函数
<tr ng-repeat="item in clients" progressCalc>
<td>
<a href="#/details/{{clients.indexOf(item)}}" title="Link to {{item.FirstName}} {{item.LastName}}" class="oly-open">{{item.FirstName}} {{item.LastName}}</a>
</td>
<td ng-hide="item.Progress == 'In Progress'" ng-class="{ 'status-success': item.Progress == 'Questionnaire Completed', 'status-error': item.Progress == 'Unsent'}">
{{item.Progress}}
</td>
<td ng-if="item.Progress == 'In Progress'" ng-model="progressCalc" class="status-info percent">
{{item.Qprogress}}
</td>
<td width="10%">
<a href="#/reports/" title{{$index + 1}}="Reports" ng-show="{{item.Progress == 'Questionnaire Completed'}}">
<span class="stat-icon-report"></span>
</a>
<a href="#/sends/{{$index + 1}}" title="Alert" ng-show="{{item.Progress == 'Unsent'}}">
<span class="stat-icon-bullhorn"></span>
</a>
<a href="#/progress/{{$index + 1}}" title="In Progress" ng-show="{{item.Progress == 'In Progress'}}">
<span class="stat-icon-phone"></span>
</a>
</td>
</tr>
而且JS:
myApp.controller('clientStatus', ['$scope', '$http', function($scope, $http) {
$http.get('assets/js/lib/angular/clientList.json').success(function(data) {
$scope.clients = data;
$scope.progressCalc = function() {
angular.forEach(function(item) {
var m = 0.26664;
var s = 0.26664;
var i = 0.694375;
var t = item.Qprogress;
t = t.replace(/m/g,'');
t = t.replace(/s/g,'');
t = t.replace(/i/g,'');
var ta = t.split("/");
var tTotal = (ta[0] * m) + (ta[1] * s) + (ta[2] * i);
tTotal = Math.round(tTotal);
$('.percent').append(tTotal + '%');
});
};
});
}]);
而且JSON格式的片段:
"FirstName": "Bill",
"LastName": "Johnson",
"Company": "Texas Instruments",
"CompanyId": "2345672",
"ClientId": "EFTGE6",
"Title": "CIO",
"Phone": "555-555-5555",
"ClientSystemStatus": "Active",
"CreationDate": "06/03/2015, 10:35:59 am",
"Progress": "In Progress",
"Qprogress": "m125/s40/i0",
"Email": "[email protected]"
谢谢!
离开了答案那angular.forEach'不是如何'工作。第一个参数是可迭代的,第二个是函数,第三个是上下文。在你的情况下,你想'angular.forEach($ scope.clients,function(item){...});' 这也只是为了显示?可能要考虑使用过滤器。 –