我正在用angularjsdevise一个表,并在excel中为每一列提供多文本过滤选项

我正在用AngularJSdevise一个有许多行和列的表格。 我需要为每个列添加一个filterbutton![filterbutton] [1]。 当点击filterbutton时,它应该展开成类似于exce的东西,列出列中的所有元素,并select必要的数据进行过滤。 有没有办法在AngularJS中做到这一点? 任何想法将不胜感激。 非常感谢!

让我们以这张表为例

ABC 2|4|1 3|2|2 | |3 7| |4 | |2 | |3 | |2 

让我们在JavaScript中构build电子表格的内部。 你可以将列对象移动到一个json文件来读取持久性。

 var sheet = { columns = [ [2, 3, null, 7], // A [4, 2], // B [1, 2, 3, 4, 2, 3, 2] // C ], maxRowCount: function () { var max = 0; columns.forEach(function (item) { max = Math.max(max, item.length); }); return max; } }; function filterHandler(filterOptions, colIndex) { // pass in an array of the values you want to show var rowsToShow = []; var i; for (i = 0; i < sheet.maxRowCount(); i++) { if (sheet.columns[colIndex] in filterOptions) { rowsToShow.push(i + 1); // for one based rows. } } return rowsToShow; } 

从这里你需要做一些与dom的东西。 使用类似checkbox列表来标记要筛选的项目。 把它传递给filterHandler。 它将返回一个索引数组来显示。 隐藏所有其他人。

要筛选值为2和4的列C,请执行以下操作

 var showRows = filterHandler([2, 4], 2); // showRows == [2, 4, 5, 7] 

因此隐藏所有行的指示不在showRows数组中。