Я використовую вбудований кутовий фільтр OrderBy для моїх елементів за датою, і він працює так, як очікувалося в DOM, але я думав, що оновить масив сам, щоб я міг працювати з новим порядком елементів.
У когось є ідеї, як цього досягти?
Дякую.
P.S. Я використовую AngularJS 1.3.14, якщо це щось змінює.
Відповіді:
2 для відповіді № 1Ви повинні повторно замовити масив у контролера, перш ніж прив’язати його до DOM. Це також більш ефективно, оскільки Angular не потрібно перераховувати порядок на кожному дайджест-циклі.
$scope.myOrderedArray = order( $scope.myArray );
І в ДОМ
<div ng-repeat="item in myOrderedArray"> ... </div>
2 для відповіді № 2
Фільтр повертає відсортовану копію масиву, так що ви можете просто призначити його для своєї області та утримувати посилання на відсортований масив.
Ви б ввели службу $ filter у свій контролер, а потім використаєте її програмно так:
var orderBy = $filter("orderBy");
$scope.array = orderBy(unsortedArray, expression);
Більше про цей фільтр можна дізнатися тут.
Звичайно, якщо ваш сортування вираз є динамічним,тоді вам доведеться оновлювати посилання на масив щоразу, коли він змінюється, що не завжди ідеально, але абсолютно життєздатне при менших обсягах даних.