如何在 nicolaskruchten 中动态应用过滤器 pivottable.js
How to apply filters dynamically in nicolaskruchten pivottable.js
我正在使用 nicolaskruchten pivottable,用于显示我的数据:
$('#output').pivot([
{country: "USA", city: "Boston"},
{country: "USA", city: "NYC"},
{country: "UK", city: "London"},
],
{
rows: ["country"],
cols: ["city"]
});
它显示 table 正确,但现在我想在 table 中动态过滤我的数据。
其中一种方法是过滤我的可用数据并使用过滤数据重绘数据透视表 table。
我想知道是否有可用的内置过滤器方法。
在 pivot(input [options]) 方法的选项数组中提供了一个过滤器对象,但找不到任何示例来实现。
如果有人可以建议我如何进一步进行?
您必须在每次过滤时重新渲染 table。您可以传递一个 filter
属性,它是一个将行作为参数和 returns 布尔值的函数。参见 https://github.com/nicolaskruchten/pivottable/wiki/Parameters#pivotinput-options
我应该补充一点,一般来说,您应该提交一个 Github 问题来获得有关此库的帮助,而不是在 Whosebug 上提问。
我使用 search/select 框来动态过滤数据。
过滤器的数据是从后端动态提供的。
在index.html中:
---------------- //搜索-select框1
-------------- //search-select 框 2 ...
==============//枢轴table
您实际上可以传递过滤器属性。但从内存的角度来看,这将是一个更好的实现。
通过实现要显示的默认记录集,您可以使用动态过滤器限制加载到前端的数据。
以下是我的做法。它解决了我的问题。
var filterBy={filterCol:"country",filterValue:["USA"]};
optObject['filter']=function(rowObj){
if(filterBy.filterValue.indexOf(rowObj[filterBy.filterCol])>-1) return true;
else return false;
};
我正在使用 nicolaskruchten pivottable,用于显示我的数据:
$('#output').pivot([
{country: "USA", city: "Boston"},
{country: "USA", city: "NYC"},
{country: "UK", city: "London"},
],
{
rows: ["country"],
cols: ["city"]
});
它显示 table 正确,但现在我想在 table 中动态过滤我的数据。
其中一种方法是过滤我的可用数据并使用过滤数据重绘数据透视表 table。 我想知道是否有可用的内置过滤器方法。
在 pivot(input [options]) 方法的选项数组中提供了一个过滤器对象,但找不到任何示例来实现。
如果有人可以建议我如何进一步进行?
您必须在每次过滤时重新渲染 table。您可以传递一个 filter
属性,它是一个将行作为参数和 returns 布尔值的函数。参见 https://github.com/nicolaskruchten/pivottable/wiki/Parameters#pivotinput-options
我应该补充一点,一般来说,您应该提交一个 Github 问题来获得有关此库的帮助,而不是在 Whosebug 上提问。
我使用 search/select 框来动态过滤数据。 过滤器的数据是从后端动态提供的。
在index.html中:
---------------- //搜索-select框1 -------------- //search-select 框 2 ...
==============//枢轴table
您实际上可以传递过滤器属性。但从内存的角度来看,这将是一个更好的实现。
通过实现要显示的默认记录集,您可以使用动态过滤器限制加载到前端的数据。
以下是我的做法。它解决了我的问题。
var filterBy={filterCol:"country",filterValue:["USA"]};
optObject['filter']=function(rowObj){
if(filterBy.filterValue.indexOf(rowObj[filterBy.filterCol])>-1) return true;
else return false;
};