/ / AngularJS OrderBy оновити вихідний масив - angularjs, сортування, angularjs-orderby

AngularJS OrderBy оновлення вихідного масиву - angularjs, сортування, angularjs-orderby

Я використовую вбудований кутовий фільтр 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);

Більше про цей фільтр можна дізнатися тут.

Звичайно, якщо ваш сортування вираз є динамічним,тоді вам доведеться оновлювати посилання на масив щоразу, коли він змінюється, що не завжди ідеально, але абсолютно життєздатне при менших обсягах даних.