[javascript] 각도 ng- 반복

각도 배열을 반대로 배열하려면 어떻게해야합니까? orderBy 필터를 사용하려고하는데 정렬 할 술어 (예 : ‘name’)가 필요합니다.

<tr ng-repeat="friend in friends | orderBy:'name':true">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
      <td>{{friend.age}}</td>
<tr>

정렬하지 않고 원래 배열을 뒤집는 방법이 있습니까? 그렇게 :

<tr ng-repeat="friend in friends | orderBy:'':true">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
      <td>{{friend.age}}</td>
<tr>



답변

다음과 같은 사용자 정의 필터를 사용하는 것이 좋습니다.

app.filter('reverse', function() {
  return function(items) {
    return items.slice().reverse();
  };
});

그런 다음 다음과 같이 사용할 수 있습니다.

<div ng-repeat="friend in friends | reverse">{{friend.name}}</div>

여기에서 작동하는 것을 참조하십시오 : Plunker Demonstration


이 필터는 필요에 맞게 사용자 정의 할 수 있습니다. 데모에서 다른 예제를 제공했습니다. 일부 옵션에는 역전을 수행하기 전에 변수가 배열인지 확인하거나 문자열과 같은 더 많은 것들을 되돌릴 수 있도록보다 관대하게 만드는 것이 포함됩니다.


답변

이것이 내가 사용한 것입니다 :

<alert ng-repeat="alert in alerts.slice().reverse()" type="alert.type" close="alerts.splice(index, 1)">{{$index + 1}}: {{alert.msg}}</alert>

최신 정보:

이전 버전의 Angular에 대한 대답은 괜찮습니다. 지금, 당신은 사용해야합니다

ng-repeat="friend in friends | orderBy:'-'"

또는

ng-repeat="friend in friends | orderBy:'+':true"

에서 https://stackoverflow.com/a/26635708/1782470


답변

죄송 년 후이 최대를 가져 오는, 그러나 새로운, 거기에 쉽게 솔루션 , 나중에 각도 1.3.0-rc.5 및 작동이 .

에서 설명한 문서 “에는 속성이 제공되지 않을 경우, (예를 들어 ‘+’)를 배열 요소 자체 정렬 위치를 비교하는데 사용된다.” 따라서 해결책은 다음과 같습니다.

ng-repeat="friend in friends | orderBy:'-'" 또는

ng-repeat="friend in friends | orderBy:'+':true"

이 솔루션은 배열을 수정하지 않고 (적어도 우리 코드에서는) 추가 계산 리소스가 필요하지 않기 때문에 더 나은 것 같습니다 . 나는 기존의 모든 답변을 읽었으며 여전히이 답변을 선호합니다.


답변

$ index 매개 변수로 되돌릴 수 있습니다

<tr ng-repeat="friend in friends | orderBy:'$index':true">


답변

간단한 해결책 :-(어떤 방법도 만들 필요가 없습니다)

ng-repeat = "friend in friends | orderBy: reverse:true"


답변

스코프에서 메소드를 호출하여 다음과 같이 역전시킬 수 있습니다.

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.angularjs.org/1.0.5/angular.min.js"></script>
    <script>
    angular.module('myApp', []).controller('Ctrl', function($scope) {
        $scope.items = [1, 2, 3, 4];
        $scope.reverse = function(array) {
            var copy = [].concat(array);
            return copy.reverse();
        }
    });
    </script>
</head>
<body ng-controller="Ctrl">
    <ul>
        <li ng-repeat="item in items">{{item}}</li>
    </ul>
    <ul>
        <li ng-repeat="item in reverse(items)">{{item}}</li>
    </ul>
</body>
</html>

(가) 참고 $scope.reverse때문에 어레이의 복사본을 생성 Array.prototype.reverse수정 원의 배열.


답변

1.3.x를 사용하는 경우 다음을 사용할 수 있습니다

{{ orderBy_expression | orderBy : expression : reverse}}

출판 날짜별로 책을 내림차순으로 나열

<div ng-repeat="book in books|orderBy:'publishedDate':true">

출처 : https://docs.angularjs.org/api/ng/filter/orderBy