서비스를 호출하는 컨트롤러에 연결된 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
orderBy
reverse
플래그에 대한 세 번째 옵션을 수락 할 수 있습니다 .
<select ng-option="item.name for item in items | orderBy:'name':true"></select>
여기서 항목은 ‘name’속성을 역순으로 정렬합니다. 두 번째 인수는 모든 순서 함수일 수 있으므로 모든 규칙에서 정렬 할 수 있습니다.
답변
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";
});
답변
세 번째 계층에서 변수를 정렬하려는 사람은 다음을 수행하십시오.
<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>