1

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 アプローチを使用すると、事前選択は機能しますが、値は複数形になりません。

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 に答える