Angular数据表选择过滤器不使用0或false值

问题描述 投票:2回答:1

我在服务器端处理模式(Ajax)中使用Angular datatable并使用Light Column Filter插件来过滤每列中的数据。

HTML

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

数据表配置

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,1true,false测试选择值。在两种方式中,true或1值的选项都是正确的,但0或false值的选项不正确。

在您看来,问题出在哪里?

angularjs datatable angular-datatables
1个回答
0
投票

您将值定义为数字

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

但你返回字符串

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

数据将始终是一个字符串,因为源是JSON。尝试将两者都设置为字符串并强制返回'0''1'

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

return data == '0' || data == 'false' ? '0' : '1'
© www.soinside.com 2019 - 2024. All rights reserved.