Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   фильтр orderBy в angularJS (https://javascript.ru/forum/angular/70013-filtr-orderby-v-angularjs.html)

fenek 03.08.2017 16:06

фильтр orderBy в angularJS
 
пусть есть одномерный массив объектов - objects - в объекте есть какое-нибуть св-во - например index. надо по нему отсортировать весь массив при помощи фильтра orderBy. и заменить массив на отсортированнный.

когда мы делает таким образом -----

<div ng-repeat="object in objects | orderBy: 'index' ">
<p class='inndex'> {{ object.index }}</p>
</div>

то эти индексы выводятся отсортированными - однако массив остается прежним.

{{ objects | orderBy: 'index' }} - во view( я это называю видео-трубкой) выдает на экране монитора отсортированный массив, не могу понять как первоначальному массиву присвоить этот отсортированный.

destus 03.08.2017 19:14

<!DOCTYPE html>
<html ng-app="demo">
<head>
  <meta charset="utf-8" />
  <title>AngularJS</title>
  <script src="https://code.angularjs.org/1.5.4/angular.js"></script>
  <script>
      var app = angular.module('demo', []);

      app.controller('MainCtrl', function($scope, $filter) {
          $scope.objects = [{index: 10}, {index: 1}, {index: 5}];
          $scope.objects = $filter('orderBy')($scope.objects, 'index');
      });
</script>
</head>
<body ng-controller="MainCtrl">
  <div ng-repeat="object in objects">
    <p class='inndex'> {{ object.index }}</p>
  </div>
</body>
</html>

fenek 04.08.2017 03:11

проверил

Эта конструкция работает только один раз в отличие от
{{ objects | orderBy: 'index' }}

Если динамичски менять массив объектов и индекс, то метод $filter не сортирует меняющиеся массивы - в отличие от того что я написал

но я не понимаю как то что появляется на экране превратить в реальный массив

destus 04.08.2017 06:49

Цитата:

Если динамичски менять массив объектов и индекс, то метод $filter не сортирует меняющиеся массивы - в отличие от того что я написал
Ну так значит надо вызывать еще раз $filter() в том месте, где происходит изменение массива :cray:

fenek 04.08.2017 14:27

Логично однако - сообщу о результатах

fenek 04.08.2017 14:33

Все - заработало - если вы не против - я вам еще пару вопросов задам. Когда соображу как их сформулировать

fenek 04.08.2017 20:46

не можете ссылку дать где описывается сотворение методов при помощи $ из фильтров и объектов типа $index


Часовой пояс GMT +3, время: 17:14.