在select中使用ngPluralize

时间:2013-03-18 07:32:06

标签: javascript angularjs

是否可以在配置了ngOoptions的select标签内使用ngPluralize来复制下拉列表的选项?

我目前有以下控制器

function Ctrl ($scope) {
  $scope.ranges = [1, 2, 3, 4, 5];
  $scope.range = $scope.ranges[4];

  $scope.$watch('range', function(val) {
    console.log('change' + val);
  });
};

以及以下标记

<div ng-controller="LiveViewerCtrl">
  <select ng-model="range" 
          ng-options="range for range in ranges" 
          ng-pluralize 
          count="range" 
          when="{'1': '1 Minute', 'other': '{} Minutes'}">
  </select>
</div>  

我也尝试使用ng-repeat自己创建选项,并且运行正常。不幸的是,下拉列表有一个空的默认值,虽然我在控制器中指定了默认值,但未预先选择。如果我使用ngOptions方法预选工作,但值不是多元化的。

1 个答案:

答案 0 :(得分:9)

正如Dmitry所述,ngPluralize不能与ngOptions一起使用,但没有什么能阻止您将其与ngRepeat一起使用:

HTML:

<body ng-controller="AppController">

  <select ng-model="selectedRange">
    <option value="">Select number ...</option>
    <option 
      ng-repeat="range in ranges"
      ng-pluralize
      count="range"
      when="{1: '{{range}} minute', other: '{{range}} minutes'}"
    >{{range}}</option>  
  </select>

</body>

JS:

app.controller('AppController',
    [
      '$scope',
      function($scope) {
        $scope.ranges = [1, 2, 3, 4, 5];
        $scope.selectedRange = $scope.ranges[4];
      }
    ]
  );

Plunker

顺便说一下,关于你的“预选”问题,请注意JavaScript数组是zero-indexed