我在 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/

10-10 00:42
查看更多