요소의 각도 ng-repeat 조건부 랩 항목 (ng-repeat의 그룹 항목)
조건을 사용하여 항목을 ng-repeat로 그룹화하려고합니다.
예제 조건은 모든 요소를 동일한 시간으로 그룹화하는 것입니다.
자료:
[
{name: 'AAA', time: '12:05'},
{name: 'BBB', time: '12:10'},
{name: 'CCC', time: '13:20'},
{name: 'DDD', time: '13:30'},
{name: 'EEE', time: '13:40'},
...
]
'time'필드는 실제로 타임 스탬프 (1399372207)이지만 정확한 시간을 사용하면 예제 출력을 이해하기가 더 쉽습니다.
ng-repeat를 사용하여 이러한 항목을 나열하고 있습니다.
<div ng-repeat="r in data| orderBy:sort:direction">
<p>{{r.name}}</p>
</div>
또한 시도 :
<div ng-repeat-start="r in data| orderBy:sort:direction"></div>
<p>{{r.name}}</p>
<div ng-repeat-end></div>
유효한 출력은 다음과 같습니다.
<div class="group-class">
<div><p>AAA</p></div>
<div><p>BBB</p></div>
</div>
<div class="group-class">
<div><p>CCC</p></div>
<div><p>DDD</p></div>
<div><p>EEE</p></div>
</div>
내 문제에 대한 간단한 해결책이 없다면 마지막 옵션은 데이터를 그룹화 한 다음 ng-repeat에서 사용되는 범위 변수에 할당하는 것입니다.
이견있는 사람?
angular.filter 모듈 의 groupBy 필터를 사용할 수 있습니다 .
따라서 다음과 같이 할 수 있습니다.
사용법 : collection | groupBy:property
점 표기법으로 중첩 된 속성 사용 : property.nested_property
JS :
$scope.players = [
{name: 'Gene', team: 'alpha'},
{name: 'George', team: 'beta'},
{name: 'Steve', team: 'gamma'},
{name: 'Paula', team: 'beta'},
{name: 'Scruath', team: 'gamma'}
];
HTML :
<ul ng-repeat="(key, value) in players | groupBy: 'team'">
Group name: {{ key }}
<li ng-repeat="player in value">
player: {{ player.name }}
</li>
</ul>
RESULT:
Group name: alpha
* player: Gene
Group name: beta
* player: George
* player: Paula
Group name: gamma
* player: Steve
* player: Scruath
UPDATE: jsbin
First make group in Controller:
$scope.getGroups = function () {
var groupArray = [];
angular.forEach($scope.data, function (item, idx) {
if (groupArray.indexOf(parseInt(item.time)) == -1) {
groupArray.push(parseInt(item.time));
}
});
return groupArray.sort();
};
Then Make a Filter for it:
myApp.filter('groupby', function(){
return function(items,group){
return items.filter(function(element, index, array) {
return parseInt(element.time)==group;
});
}
}) ;
Then Change Template:
<div ng-repeat='group in getGroups()'>
<div ng-repeat="r in data | groupby:group" class="group-class">
<div><p>{{r.name}}</p></div>
</div>
</div>
SEE DEMO
Just a simple HTML solution for static groups.
<ul>
Group name: Football
<li ng-repeat="player in players" ng-if="player.group == 'football'">
Player Name: {{ player.name }}
</li>
Group name: Basketball
<li ng-repeat="player in players" ng-if="player.group == 'basketball'">
Player Name: {{ player.name }}
</li>
</ul>
Output:
Group name: Football
- Player Name: Nikodem
- Player Name: Lambert
Group name: Basketball
- Player Name: John
- Player Name: Izaäk
- Player Name: Dionisia
ReferenceURL : https://stackoverflow.com/questions/23493063/angular-ng-repeat-conditional-wrap-items-in-element-group-items-in-ng-repeat
'IT Share you' 카테고리의 다른 글
jquery / javascript의 PHP 함수 number_format과 동일 (0) | 2021.01.09 |
---|---|
SupportMapFragment를 두 번째로 여는 중 오류 발생 (0) | 2021.01.09 |
배치 파일 사본의 모든 "덮어 쓰기를 원하십니까"프롬프트에 아니오라고 말하는 방법은 무엇입니까? (0) | 2021.01.09 |
Linux에서 Python으로 내보내기를 사용하는 방법 (0) | 2021.01.09 |
값이 NaN 인 경우 jQuery (0) | 2021.01.09 |