Угловой фильтр выбора данных не работает с 0 или ложным значением

Я использую Angular datatable на сервере режим боковой обработки (Ajax) и используйте фильтр световых столбцов для фильтрации данных в каждом столбце.

HTML

<table datatable dt-options="dtOptions" dt-columns="dtColumns"></table>

Datatable config

DTOptionsBuilder.dtOptions = DTOptionsBuilder.fromSource()
    .withOption('processing', true)
    .withOption('serverSide', true)
    .withDataProp('data')
    .withPaginationType('full_numbers')
    .withOption('ajax', {
         url: '/products',
         type: 'GET',
         headers: {Authorization: 'Bearer ' + $auth.getToken()},
         error: function (xhr, error) {
            $log.error(error);
         },
         complete: function (data) {
            $log.log('Done');
         }
    })
    .withLightColumnFilter({
         '0': {type: 'text'},
         '1': {
            type: 'select',
            values: [
               { value: 1, label: 'Yes'},
               { value: 0, label: 'No'}
            ]
         }
    });

создать столбцы

 $scope.dtColumns = [

    DTColumnBuilder.newColumn('title').withTitle('title').renderWith(function(data) {
       return data;
    }),
    DTColumnBuilder.newColumn('for_sale').withTitle('for sale').renderWith(function(data){
       return data; // 0, 1 or true, false
   })
 ]

Фильтр с type:'text' правильный и работает нормально. Но фильтр с type:'select' неверен! Другими словами, когда я выбираю Да, фильтр работает и данные фильтруются, но когда я выбираю Нет, результат остается пустым.

Я тестирую выбранное значение с помощью 0,1 и true,false. В обоих случаях вариант с истинным или 1 значением верен, но вариант с 0 или ложным значением неверен.

По вашему мнению, в чем проблема?


person Morteza QorbanAlizade    schedule 25.12.2017    source источник
comment
Я не могу заставить его работать наполовину :( вот plunkr для работы - ›plnkr.co/edit/GiLfIA5PwYFG1Muqkzko?p=preview   -  person davidkonrad    schedule 27.12.2017
comment
@davidkonard, почему ты удалил свой ответ ?!   -  person Morteza QorbanAlizade    schedule 27.12.2017
comment
@davidkonard В plunkr используйте type: 'select', а не введите: 'text',   -  person Morteza QorbanAlizade    schedule 27.12.2017
comment
Я всегда могу восстановить удаление, если найду ответ :) Но ток не правильный. Да, у plunkr есть какой-то мусор, много чего перепробовал, в конце концов, самое простое, просто нажал вилку и разместил ссылку здесь. Это серверная часть с некоторыми данными, которые, возможно, могут быть использованы.   -  person davidkonrad    schedule 27.12.2017


Ответы (1)


Вы определяете ценности как nunbers

values: [
  { value: 1, label: 'Yes'},
  { value: 0, label: 'No'}
]

Но ты возвращаешь струны

return data; // 0, 1 or true, false

data будет всегда строкой, потому что источником является JSON. Попробуйте установить оба значения в строки и вернуть '0' и '1' принудительно:

{ value: '1', label: 'Yes'},
{ value: '0', label: 'No'}

а также

return data == '0' || data == 'false' ? '0' : '1'
person davidkonrad    schedule 25.12.2017
comment
Спасибо @davidkonrad, но данные, которые отправляются через api, boolean (true, false), и мне нужен этот формат в других местах для флажков, что мне делать? - person Morteza QorbanAlizade; 25.12.2017
comment
@MortezaQorbanAlizade, какую версию / ветку LIght Column Filter вы используете? - person davidkonrad; 26.12.2017
comment
Вверху файла LIght Column Filter написано: angular-datatables - v0.6.3-dev - person Morteza QorbanAlizade; 27.12.2017