在select中使用ngPluralize

obi*_*mme 1 javascript angularjs

是否可以在使用ngOoptions配置的选择标记内部使用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);
  });
};
Run Code Online (Sandbox Code Playgroud)

和以下标记

<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>  
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*wie 9

正如德米特里解释的那样,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>
Run Code Online (Sandbox Code Playgroud)

JS:

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

Plunker

顺便说一下,关于你的"预选"问题,请注意JavaScript数组是零索引的.