AngularJS For Loop with Numbers & Ranges

后端 未结 24 3371
抹茶落季
抹茶落季 2020-11-22 13:40

Angular does provide some support for a for loop using numbers within its HTML directives:

do something <
24条回答
  •  不知归路
    2020-11-22 14:43

    I use my custom ng-repeat-range directive:

    /**
     * Ng-Repeat implementation working with number ranges.
     *
     * @author Umed Khudoiberdiev
     */
    angular.module('commonsMain').directive('ngRepeatRange', ['$compile', function ($compile) {
        return {
            replace: true,
            scope: { from: '=', to: '=', step: '=' },
    
            link: function (scope, element, attrs) {
    
                // returns an array with the range of numbers
                // you can use _.range instead if you use underscore
                function range(from, to, step) {
                    var array = [];
                    while (from + step <= to)
                        array[array.length] = from += step;
    
                    return array;
                }
    
                // prepare range options
                var from = scope.from || 0;
                var step = scope.step || 1;
                var to   = scope.to || attrs.ngRepeatRange;
    
                // get range of numbers, convert to the string and add ng-repeat
                var rangeString = range(from, to + 1, step).join(',');
                angular.element(element).attr('ng-repeat', 'n in [' + rangeString + ']');
                angular.element(element).removeAttr('ng-repeat-range');
    
                $compile(element)(scope);
            }
        };
    }]);
    

    and html code is

    Hello 4 times!

    or simply

    Hello 5 times!

    or even simply

    Hello 3 times!

    or just

    Hello 7 times!

提交回复
热议问题