1

是否可以在配置有 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);
  });
};

和以下标记

<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 方法,则预选有效,但值不是复数形式。

4

1 回答 1

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];
      }
    ]
  );

普朗克

顺便说一句,关于您的“预选”麻烦,请注意 JavaScript 数组是零索引的

于 2013-03-18T09:50:33.787 回答