@desuvin

Управляемая сортировка в angular?

Столкнулся с задачей, которую никак не могу решить хотя на первый взгляд кажется простой.
Суть следующая: Нужно вывести select в котором будут надписи под тип
"Сортировка по цене по возрастанию"
"Сортировка по цене по убыванию"
"Сортировка по месяцу по возрастанию"

Все это привязано к каком-нибудь scope.sort

И вот главный вопрос. Что написать в самом селекте и что написать в ng-repeat, чтобы можно было кликнув по селекту указать колонку по которой будет искаться, а также desc или asc

Пробовал так:

<select id="select-sort" ng-model="filter.sort" required ng-options="bool.value as bool.name for bool in boolValues"
                    ng-init="boolValues = [{value: {type: 'price', desc: true}, name: 'По возрастанию цены'}, {value: {type: 'price', desc: false}, name: 'По убыванию цены'}, {value: {type: 'm', desc: true}, name: 'По дате заезда'}]; filter.sort={type: 'price', desc: true}">


Но, к сожалению, не работает. Да и не знаю как потом дальше это вставить в ng-repeat
  • Вопрос задан
  • 2284 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
<div ng-controller="ProductsController as products">
  <select ng-model="products.sort" ng-change="products.updateList()">
  </select>

  <ul>
    <li ng-repeat="item in products.list">{{ item.name }}</li>
  </ul>
</div>


function ProductsController {
   var vm = this;

   vm.sort = 1;
   vm.updateList = updateList;
   updateList();

   function updateList () {
       vm.list = vm.list.sort(function (a, b) {
            // логика сортировки тут
       });
   }
}


p.s. хватит решать проблемы тупо в шаблонах, будет намного проще и меньше боли.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы