Dojo的依赖关系问题-未捕获的TypeError:chart.addPlot不是函数

时间:2018-08-09 12:24:57

标签: javascript dependency-injection dojo typeerror

我正在尝试将Dojo / Dojox图表添加到我的代码中,但是我不断收到错误Uncaught TypeError: chart.addPlot is not a function。我很确定这是我在define([...], function()...下设置依赖项的方式存在的问题,但是我没有看到。我的依存关系设置如下:

define([
'dojo/_base/declare',
'dijit/_WidgetsInTemplateMixin',   
'dojo/io-query',
'dojo/query',
'dijit/MenuItem', 
....//Dependencies added for Pie Chart. See corresponding functions
'dojox/charting/Chart2D', 
'dojox/charting/plot2d/Pie',
'dojox/charting/action2d/Highlight',   
'dojox/charting/action2d/MoveSlice', 
'dojox/charting/action2d/Tooltip',
'dojox/charting/themes/PrimaryColors'
], function (declare, _WidgetsInTemplateMixin, BaseWidget, ... 
...Chart2D, Pie, Highlight, MoveSlice, Tooltip, dojoxTheme) 
{ 
/*jshint unused: true*/
return declare([BaseWidget, _WidgetsInTemplateMixin], {
 ...

如您所见,我的功能按相同的顺序:Chart2D, Pie, Highlight, MoveSlice, Tooltip, dojoxTheme。在代码的更下方,我通过调用构造函数chart创建了一个名为new Chart2D的变量。我以为我可以使用其中的任何方法。 .addPlotChart2D的一种方法。

 var c = domConstruct.create("div", {
      id: "Chart"
    }, domConstruct.create("div"));

 var chart = new Chart2D(c);

但是,当我尝试使用以下内容时,会引发错误。添加依赖项时,我还缺少什么吗?有建议吗?

chart.addPlot("default", {
      type: "Pie",
      radius: 50,
      htmlLabels: true
    });

1 个答案:

答案 0 :(得分:1)

我刚刚找到问题的答案。它确实与模块和函数参数的顺序有关。简而言之,这就是问题所在:当我在define下列出我的模块时,它们与下面的函数别名/参数不匹配。有一些mod没有列出函数参数,所以我认为只要按时间顺序仍在“技术上”仍然可以。不是。这就是导致错误的原因。一旦我移动了它们(见下文),问题就解决了。希望这对遇到类似问题的人有所帮助。 enter image description here