以给定格式打印数字

时间:2014-09-05 10:31:56

标签: javascript angularjs

我正在尝试使用ng-repeat打印0到24 mod 12的数字。 但我希望数字显示为

00 01 02 03 04 .... 11 00 01 02 ... 11

而不是

0 1 2 3... 11 0 1 2 .... 11

这可以用角度来完成吗?

3 个答案:

答案 0 :(得分:1)

你可以定义一个'zeroPad'过滤器,如下所示:

angular.module('myModule', [])
    .filter('zeroPad', function () {
        return function (n, length) {
            var num = parseInt(n, 10);
            length = parseInt(length, 10);
            if (isNaN(num) || isNaN(length)) {
                return n;
            }
            num = '' + num;
            while (num.length < length) {
                num = '0' + num;
            }
            return num;
        };
    });

然后以这种方式在您的视图中使用它:

{{ myNumber | zeroPad: 2 }}

答案 1 :(得分:0)

这就是我为你所做的: http://plnkr.co/edit/BlodIO1TvG3uGzncjM75?p=preview

制作一个自定义过滤器选项,如下所示:

    var app = angular.module('plunker', []);

    app.controller('MainCtrl', function($scope) {
      $scope.name = 'World';

      $scope.numbers = [];

      for (var i = 1; i < 24; i++)
        $scope.numbers.push(i);
    });


    app.filter('padding', function() {
      return function(input) {
        var n = input;
        return (n < 10) ? '0' + n : n;
      }
    });

在HTML页面中:

<ul>
  <li ng-repeat="number in numbers">
    {{number % 12 | padding}}
  </li>
</ul>

如果它回答了您的问题,请标记为答案

答案 2 :(得分:0)

_.str角度填充过滤器的最小代码:

jsFiddle

<div ng-app="app" ng-controller="PadController">
   <div ng-repeat="num in nums">{{ num | _.str: 'pad':[2, '0'] }}</div>
</div>
angular.module('app', ['underscore.string']).controller('PadController', function ($scope) {
    $scope.nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
});