[angularjs] AngularJS에서 알파벳순으로 드롭 다운 정렬

서비스를 호출하는 컨트롤러에 연결된 ng-options를 사용하여 드롭 다운을 채우고 있습니다. 불행히도 들어오는 데이터는 혼란스럽고 알파벳순으로 정렬해야합니다.

당신은 무언가 $.sortBy가 그것을 할 것이라고 생각하지만 불행히도 그것은 잭을하지 않았습니다. 도우미 메서드 function asc(a,b)또는 이와 유사한 방법으로 자바 스크립트를 통해 정렬 할 수 있다는 것을 알고 있지만이 작업을 수행하는 더 확실한 방법이 없다고 생각하지 않으며 도우미 메서드로 컨트롤러를 부풀리고 싶지 않습니다. 그것은 원칙적으로 매우 기본적인 것이므로 AngularJS에 왜 이것이 없는지 이해할 수 없습니다.

같은 일을하는 방법이 $orderBy('asc')있습니까?

예:

<select ng-option="items in item.$orderBy('asc')"></select>

orderBy일반적으로 데이터 정렬을 시도 할 때마다 원하는 옵션 을 사용할 수 있도록 옵션을 사용하는 것이 매우 유용합니다 .



답변

Angular에는 다음과 같이 사용할 수 있는 orderBy 필터가 있습니다.

<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name'"></select>

예제는 이 바이올린 을 참조하십시오 .

track by사용중인 경우 orderBy필터 뒤에 다음 과 같이 표시되어야합니다.

<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name' track by f.id"></select>


답변

필터를 사용할 수 있어야합니다. orderBy

orderByreverse플래그에 대한 세 번째 옵션을 수락 할 수 있습니다 .

<select ng-option="item.name for item in items | orderBy:'name':true"></select>

여기서 항목은 ‘name’속성을 역순으로 정렬합니다. 두 번째 인수는 모든 순서 함수일 수 있으므로 모든 규칙에서 정렬 할 수 있습니다.

@ 참조 http://docs.angularjs.org/api/ng.filter:orderBy


답변

var module = angular.module("example", []);

module.controller("orderByController", function ($scope) {
    $scope.orderByValue = function (value) {
        return value;
    };

    $scope.items = ["c", "b", "a"];
    $scope.objList = [
        {
            "name": "c"
        }, {
            "name": "b"
        }, {
            "name": "a"
        }];
        $scope.item = "b";
    });

http://jsfiddle.net/Nfv42/65/


답변

세 번째 계층에서 변수를 정렬하려는 사람은 다음을 수행하십시오.

<select ng-option="friend.pet.name for friend in friends"></select>

당신은 이렇게 할 수 있습니다

<select ng-option="friend.pet.name for friend in friends | orderBy: 'pet.name'"></select>


답변