angularjs ng-options数组相同的标签值

时间:2013-09-30 08:07:59

标签: angularjs angularjs-ng-repeat

我有一个像

这样的过滤器
angular.module(Bt.config.site.ng_app_name)
    .filter('range', function () {
        return function (input, min, max, padding){
            min = parseInt(min);
            max = parseInt(max);
            padding = padding ? padding : false;
            for (var i=min; i<=max; i++){
                input.push(padding ? ("00" + i).slice (-2) : i + '');
            }
            return input;
        };
    });

选择

<select ng-options="n for n in [] | range:1:31:true" name="day" value="{{contestant.day}}" ng-model="contestant.day">
    <option value="">DD</option>
</select>

输出

<select ng-model="contestant.day" value="" name="day" ng-options="n for n in [] | range:1:31:true" class="ng-pristine ng-valid">
    <option value="" class="">DD</option>
    <option value="0">01</option>
    <option value="1">02</option>
    <option value="2">03</option>
    // and so on
</select>

应该是

<select ng-model="contestant.day" value="" name="day" ng-options="n for n in [] | range:1:31:true" class="ng-pristine ng-valid">
    <option value="" class="">DD</option>
    <option value="01">01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    // and so on
</select>

提前致谢。

1 个答案:

答案 0 :(得分:3)

角度生成选项可能没有您期望的选项值。

当源是数组时,当源是对象时,值将是索引和键名。

但是,每当用户切换选项时,这不应该成为问题,angular会查找源内的索引位置并将该值分配给模型:

因此,如果用户选择01contestant.day仍会保留01,而不只是1