如何使用响应数组获取YADCF选择过滤器选项

时间:2019-04-11 13:40:17

标签: javascript jquery datatables django-rest-framework yadcf

这是一个JSFiddle:https://jsfiddle.net/5sgc03my/。我有一个带有两个YADCF过滤器的DataTable:

var oTable = $('#example').DataTable({
    "serverSide": true,
    "ajax": {"url": "/platform/activities/?format=datatables",
         "dataSrc": function(json){
           yadcf_data_1 = json.options.activity_type
           console.log(yadcf_data_1)
           return json.data;
          }
        },
});
console.log(yadcf_data_1)

yadcf.init(oTable,
      [
        {
          column_number : 0,
          filter_type: "range_date",
        },
        {
          column_number : 1,
          filter_type: "select",
          select_type: "select2",
        },

/platform/activities/?format=datatables返回以下响应:

{"recordsTotal":23286,"recordsFiltered":23286,
"data":[{"id":104,"activity_type":"Option 1",}],
"draw":1,
"options":{"activity_type":[{"label":"Option 1","value":1},
                            {"label":"Option 2","value":2},]}}

当前,activity_type列(第1列)的过滤器仅返回Option 1,因为这是表中所有可用的内容。因此,我想将过滤器指向Ajax响应的activity_type部分中的options数组。我知道可以为每个过滤器设置data选项,但是我不确定如何将其指向key:value数组。当我将console.log(yadcf_data_2);放在DataTable结构之外时,它只打印undefined。这是在ajax函数中的控制台调用之前打印的。

如何将YADCF绑定到activity_type数组?

1 个答案:

答案 0 :(得分:0)

看看yadcf showcase server page,您应该将yadcf_data_0 / yadcf_data_1recordsTotal / data一起发送

您还可以在yadcf代码中调试xhr event,以查看发生了什么情况

  

//如果要使用值填充选择/自动完成过滤器

     

///您必须将以下属性yadcf_data_0 / yadcf_data_1 /等等添加到当前JSON中

     

///其中每个属性都包含一个字符串列表

     

//例如:

     

//“ yadcf_data_0”:[“ KHTML”,“ Webkit”,“ Trident”,“ Misc”,“其他浏览器”,“ Tasman”,“ Presto”,“ Gecko”],

     

//“ yadcf_data_1”:[“ Nintendo DS浏览器”,