1

私が欲しいものを本当に適切に説明することはできませんが、angularJS で ng-options を機能させようとしています:

<select ng-options="object.id as object.name for object in objects" ng-model="selected"></select>

したがって、現在の出力は次のようになります。

1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960 ...

私が達成したいことは次のとおりです。

1950 - 1954, 1955 - 1959, .... 

したがって、X年ごとに表示されます。これを達成する方法はありますか?limitTo で試してから、5回ごとに+ 5を試しましたが、成功しませんでした。

誰かアイデアはありますか?

4

1 に答える 1

0

個人的には、その範囲グループ化ロジックを JavaScript コントローラーにプッシュするだけです。次に、事前にグループ化されたオブジェクトの配列にバインドできます。

Javascript:

$scope.groupedObjects = [];  
var groupDictionary = {};             //for keeping track of the existing buckets
var bucketId = 0;
//assuming objects is an array I prefer forEach, but a regular for loop would work
$scope.objects.forEach(function (obj) { 
    var yearBucket = Math.floor(obj.name / 5) * 5; //puts things into 5-year buckets
    var upperBound = yearBucket + 4;               
    var bucketName = yearBucket + '-' + upperBound; //the name of the bucket
    if (!groupDictionary[bucketName])  { //check whether the bucket already exists
      groupDictionary[bucketName] = true;
      $scope.groupedObjects.push( {id: "id" + bucketId, name: bucketName} );
      bucketId += 1;
    }
});

そして、ただ使うgroupedObjects

<select ng-options="object.id as object.name for object in groupedObjects" 
        ng-model="group"></select>

これは、このアイデアを示すplunkerです。

于 2015-05-06T22:27:57.877 に答える