我在 View 中显示一些数据,但是我需要先进行格式化,然后才执行以下操作val.toFixed(2)
没问题,它可以工作,但是问题是val
有时带有字母,而toFixed(2)
没有考虑到这一点,因此不显示字母。
所以我需要考虑字母和数字的东西,字母不必更改,只需更改像234235.345345435
这样的数字,显然我需要像234235.34
这样的数字。
这是我正在使用的一些代码
<table>
<tr>
<th ng-repeat='header in headers'>{{header.th}}</th>
</tr>
<tr>
<td ng-repeat='data in headers'>
<div ng-repeat='inner in data.td'>
<span ng-repeat='(prop, val) in inner'>{{val.toFixed(2)}}</span>
</div>
</td>
</tr>
</table>
并在 Controller 中
$scope.LoadMyJson = function() {
for (var s in myJson){
$scope.data.push(s);
if ($scope.headers.length < 1)
for (var prop in myJson[s]){
prop.data = [];
$scope.headers.push({th:prop, td: []});
}
}
for (var s in $scope.data){
for (var prop in $scope.headers){
var header = $scope.headers[prop].th;
var data = myJson[$scope.data[s]][header];
$scope.headers[prop].td.push(data);
console.log($scope.headers[prop].td);
}
}
};
我准备了this Fiddle
现在的方式可以正确显示该表,但是如您所见,该表缺少
name
,这是由于toFixed
方法所致。那么,我该怎么办?
最佳答案
创建一个自定义filter以在您的模板上使用。
<table>
<tr>
<th ng-repeat='header in headers'>{{header.th}}</th>
</tr>
<tr>
<td ng-repeat='data in headers'>
<div ng-repeat='inner in data.td'>
<span ng-repeat='(prop, val) in inner'>{{val|formatValue}}</span>
</div>
</td>
</tr>
</table>
angular.module('whatever').filter('formatValue', function () {
return function (value) {
if (isNaN(parseFloat(value))) {
return value;
}
return parseFloat(value).toFixed(2);
}
});
关于javascript - 渲染之前格式化数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34995509/