angular-nvd3给出了各种错误,表示d3.尺度未定义

angular-nvd3 gives various errors saying that d3.scale is undefined

本文关键字:d3 表示 未定义 错误 angular-nvd3      更新时间:2023-09-26

我正在尝试一个非常基本的angular-nvd3概念验证,试图获得一个基于angular-nvd3文档的演示图。

请参阅Plunker 上的示例代码

我使用的是直线图示例,但在浏览器控制台中出现此错误:

angular.js:12477 TypeError: Cannot read property 'category20' of undefined
    at Object.nv.utils.defaultColor (nv.d3.js:987)
    at Object.nv.models.scatter (nv.d3.js:11844)
    at Object.nv.models.line (nv.d3.js:6467)
    at Object.nv.models.lineChart (nv.d3.js:6696)
    at Object.scope.api.updateWithOptions (angular-nvd3.js:95)
    at Object.scope.api.refresh (angular-nvd3.js:45)
    at Object.<anonymous> (angular-nvd3.js:437)
    at Object.fn (angular-nvd3.js:505)
    at n.$digest (angular.js:15826)
    at n.$apply (angular.js:16097)

我玩过各种图表选项,试图找到任何能呈现图表的东西,但所有的变化似乎都表明d3.scaleObject.nv内部的undefined。然而,我只是使用angular-nvd3示例中的确切图表选项和数据。

有人能看到我做错了什么吗?在使用angular-nvd3时,如何克服这个未定义的d3.scale

问题是您使用的NVD3库基于D3库的V3.x,但您使用的是D3库的v4.x。API的序数在两个版本之间发生了很大变化。

更改

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.1.1/d3.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.js"></script>

这应该可以解决问题。

我在使用Plunkr时也遇到了一些角度问题,所以我不得不对您的示例进行一些修改,但核心的更改归结为1行。

http://plnkr.co/edit/bRAtP9xIiDaXnv04RAHu