【问题标题】:ReferenceError- crossfilter is not definedReferenceError-未定义交叉过滤器
【发布时间】:2016-10-11 15:11:43
【问题描述】:

在我们将 d3、dc 和 crossfilter js 文件更新为当前文件后,我们得到:dc.js (1.7.5) 行上的 crossfilter is not defined 错误-

this.dc = _dc(d3, crossfilter);

以下是 html 的编码方式:

<script type="text/javascript" src="/js/jquery.min.js"></script>
<script  src="https://d3js.org/d3.v4.js"></script>
<script  src="https://d3js.org/d3-time.v1.min.js"></script>
<script  src="https://d3js.org/d3-time-format.v2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dc/1.7.5/dc.js">   </script> 
 <script type="text/javascript" src="/js/bootstrap.min.js"></script>    
<script src="https://cdnjs.cloudflare.com/ajax/libs/crossfilter/1.3.12/crossfilter.js"></script>   

<script type="text/javascript" src="/js/url.min.js"></script>
<script type="text/javascript" src="/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="/js/combodate.js"></script>

不确定升级现在是否需要另一个 js 文件?我们之前使用的crossfilter.js是1.3.11,我们使用的dc文件是dc.min.js dc2.0.0-beta.14。

提前感谢您的帮助!

【问题讨论】:

  • 您是否更改了加载脚本的顺序?您在 crossfilter 之前加载了 dc.js。
  • 我刚刚做了你建议@Jecoms 的更改,现在我得到了 - TypeError - d3.time 在 dc.js 行上未定义 - dc.dateFormat = d3.time.format("%m/ %d/%Y");我认为 d3 函数现在是 d3.timeFormat,而不是 d3.time.format。
  • 我将 d3 更改为 -
  • 我不知道您包含脚本的顺序实际上是保证它们按该顺序加载。您可能需要考虑像 WebPack 这样的脚本加载器/构建系统。

标签: javascript d3.js crossfilter


【解决方案1】:

您需要使用 d3 版本 3,而不是 dc.js 版本 4,并且您需要以正确的顺序加载脚本。 d3.js 和 Crossfilter 需要在 dc.js 之前加载。

【讨论】:

  • 创建饼图后 - var servicePieChart = dc.pieChart("#service-pie-chart"); dc_Flag 现在在它返回为 1 之前返回为 true。我有另一个 pieChart 现在返回为 true,对于 __dc__Flag 在它返回为 2 之前也是如此。所以我认为这就是原因错误 - chart.Data() 不是函数。任何想法如何纠正这个问题?谢谢!
  • 这似乎是一个单独的问题?如果您的原始问题得到解决,我建议您整理一个示例并创建一个新问题。我不理解评论中描述的问题。
  • 对不起。我按照您的建议将js按顺序排列,并将d3更改为-
  • 我认为您应该为此打开一个单独的问题。这是一个不同的问题。 但是,不要使用 d3 3.0.0。那是非常古老的。使用 3.x 链中的最新版本。我想那是cdnjs.com/libraries/d3/3.5.17
猜你喜欢
  • 1970-01-01
  • 2012-01-22
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多