2015-01-26 2 views
0

Я создаю небольшое приложение, которое сортирует список точек, которые пользователи имеют схож с линией игр. Я настроил ng-repeat над массивом объектов, а ng-show на другой опции выбирает для отображения диапазона в списке. Пролисты показывают разные баллы.AngularJS: OrderBy Filter on Option Select

Я добавил фильтр orderBy в ng-repeat, чтобы список отфильтровывался от самого большого до самого маленького. Например, когда выбран вариант выбора «Созданные темы», результаты поиска «Post Read» и «Posts Replied» скрыты, а список сортируется по количеству созданных потоков (от самого большого до самого маленького).

Он работает для двух значений параметров, но не для третьего. Любая идея почему?

   <tr ng-repeat="user in users | orderBy:['-created','-read','-replied']"> 
      <td> {{user.index}} </td> 
      <td> {{user.firstName}} {{user.lastName}}</td> 
      <td> 
       <span ng-show='discussionsSelect == "created"'>{{ user.created }}</span> 
       <span ng-show='discussionsSelect == "read"'>{{ user.read }}</span> 
       <span ng-show='discussionsSelect == "replied"'>{{ user.replied }}</span> 
      </td> 
      </tr> 
+0

Можете ли вы воспроизвести проблему в плункер или jsfiddle? Кроме того, пожалуйста, напишите некоторые из этого кода? – SoluableNonagon

+1

почему вы думаете, что не работает? можете ли вы опубликовать список сокращенных и упорядоченный список? –

+0

Нужно будет увидеть данные. Третий элемент в вашем orderBy будет только когда-либо вступать в игру, когда первые два элемента идентичны. Возможно, у вас нет данных, где это так. – Scott

ответ

0

Если я правильно понимаю это, вы не делаете это должным образом. Ваш список будет отсортирован только по «созданному». Второе значение предложения orderBy будет действовать только в том случае, если будут найдены два объекта с тем же «созданными». Аналогично для третьего значения в вашем предложении OrderBy. Он будет использоваться только тогда, когда два элемента имеют одинаковое «созданное» и затем одно и то же «прочитанное» значение.
Вам понадобится сделать orderBy переменную, которая устанавливается на основе выбранного варианта. Вы можете установить его имя переменной, к которой привязан ваш выбор. Я думаю, что это обсужденияВыберите в своем plnkr.

 <tr ng-repeat="user in users | discussionsSelect"> 
+0

он должен быть '' –

+0

Спасибо. @UlanMurzatayev - этот заказБыл фильтр работал. – JDH

Смежные вопросы