首页 > 解决方案 > 使用文本框进行交叉过滤

问题描述

我一直在谷歌搜索,但我似乎找不到一个使用文本框交叉过滤的好例子。

我正在尝试使用交叉过滤器在数据表上添加文本框过滤。

目前遵循此代码库http://bl.ocks.org/d3noob/6077996

阅读这个 wiki 并没有多大帮助

https://github.com/square/crossfilter/wiki/API-Reference

我知道有人问了一个问题,但解决方案太短,我无法复制它

基于文本框的交叉过滤器过滤器

标签: javascriptd3.jsdc.js

解决方案


我不确定你的项目在哪里,所以我只能为你可以进一步调查的事情提供广泛的建议。

  • 在使用 crossfilter.js 过滤维度之前,您需要注册该维度。在您找到的示例中,这就是初始化 、 、 和 变量时var magValue所做var timeDimensionvar depthValue事情var volumeByDay
  • 如果您还没有,则需要在将字符插入文本框中时进行监听。这可以通过监听keyup事件的事件监听器来完成。当监听器注册一个 keyup 事件时,您可以在相应的维度上触发一个过滤器函数。
  • 在 crossfilter.js 中使用该myDimension.filter(value)函数时,它会根据传递的参数是简单变量、数组还是函数来过滤精确值、范围或函数。在示例中,您发现这似乎由 dc.js 处理,但在 Stack Overflow 和您引用的 API 中,这是通过与预实例化维度交互来手动处理的。如果完全匹配是您想要的,那么您可以直接从您的文本框中传递内容。如果你想要更模糊的标准,你可以通过在调用时传递一个函数来使用Levenshtein distance(例如通过这个 npm 包myDimension.filter(value)) 。

让我知道这是否对您有帮助(或没有)。如果您可以分享您当前拥有的代码,我可以更具体地解决您的问题。


推荐阅读