JSFiddle : http://jsfiddle.net/WdVDh/101/.AngularJS - ngRepeat 정렬은 배열 길이를 변경합니다.
어떤 이유에서 ng-repeat 목록의 정렬 옵션을 변경하면 배열의 길이가 변경되고 로컬 복사본에 모든 항목이 제거됩니다.
필자는 'showLeavers'$ 필터 지시문에 연결된 확인란 선택을 통해 완료된 'leaveDate'속성으로 직원을 필터링하는 옵션을 포함하여 필터/정렬 조합을 사용했습니다.
로컬 복사본에서 확인란을 선택하지 않고 두 번째 또는 세 번째 정렬 옵션을 선택하면 배열이 지워 지므로 ng-repeat 목록에 아무 것도 나타나지 않지만 확인란을 선택하면 첫 번째 또는 네 번째 정렬 옵션이 선택되면 목록이 나타납니다.
분명히 위의 JSFiddle에서와 비슷한 것을 보여줄 수 있기 때문에 분명히 코드 어딘가에 문제가 있습니다 (필자는 필터 지시어를 추측 할 것입니다).
HTML :
<md-list-item ng-repeat="employee in employees | orderBy: sortEmployees | filter: searchEmployees | showLeavers:showLeaver">
<md-input-container class="col-xs-12 col-sm-6 col-md-3">
<label>Sort by</label>
<md-select ng-model="allEmployees.sortEmployees">
<md-option selected value="surname">Surname - A to Z</md-option>
<md-option value="-surname">Surname - Z to A</md-option>
<md-option value="forename">Forename - A to Z</md-option>
<md-option value="-forename">Forename - Z to A</md-option>
</md-select>
</md-input-container>
<md-checkbox ng-model="showLeaver">Show Leavers?</md-checkbox>
이
필터 : 당신은 당신의 .splice()을 변경해야
app.filter('showLeavers', function() {
return function (employees, showLeaver) {
var matches = [];
angular.forEach(employees, function(value) {
matches.push(value);
if (value.leaveDate && !showLeaver) {
matches.splice(value);
}
return matches;
}
})
완벽한, 첫 번째 줄에 내 로컬 버전에 고정 (하나는 않습니다 실제로 이해하기 때문에 어떤 것을 사용)을 –