DOJO 工具提示给出“未捕获的类型错误:对象不是函数”

Posted

技术标签:

【中文标题】DOJO 工具提示给出“未捕获的类型错误:对象不是函数”【英文标题】:DOJO Tooltip gives "Uncaught TypeError: object is not a function " 【发布时间】:2013-09-20 12:22:55 【问题描述】:

我有以下代码尝试使用dojox/charting/action2d/Tooltip

require([
    "dojox/charting/Chart",
    "dojox/charting/themes/Claro",
    "dojox/charting/plot2d/MarkersOnly",
    "dojox/charting/plot2d/Columns",
    "dojox/fx/easing",
    "dojox/charting/action2d/Tooltip",
    "dojox/charting/axis2d/Default",
    "dojo/ready"
], function(Chart, Theme, MarkersOnly, easing, Tooltip, Columns, Default, ready) 

        ready(function()
                var chart1 = new Chart("chartArea");
                chart1.setTheme(Theme);
                chart1.addPlot("budget", type: "MarkersOnly");
                chart1.addPlot("actual", type: "Columns", gap: 3, animate:  duration: 300, easing: dojox.fx.easing.linear);

                //add the axis (both x and y) below
                chart1.addAxis("x",labels: [
                    value:1, text: "01 - AXA",value:2, text: "02 - MR",value:3, text: "03 - CT",value:4, text: "04 - XP WH",                                              
                    value:5, text: "06 - XP RF",value:6, text: "07 - XPC",value:7, text: "09 - ECS",value:8, text: "10 - XPU"], 
                     rotation:-90, 
                     font: "normal normal bold 12pt Arial"
                );//end adding axis to the chart
                chart1.addAxis("y", vertical: true, font: "normal normal bold 12pt Arial");

                chart1.addSeries("Series 2", [80,80,80,80,80,80,80,80,80,80,80,80,80], plot:"budget");
                //chart1.addSeries("Series 1", [73,71,78,93,70,,,83,100,,,], plot:"actual");
                chart1.addSeries("Series 1", [y:75, tooltip:"custom",y:71,y:78,y:93,y:70,y:83,y:100], plot:"actual");


                var tip = new Tooltip(chart1, "default");  
                chart1.render();
        );//end of DOJO ready
    );//end function chart stuff

并且 DOJO 给了我以下错误:

Uncaught TypeError: object is not a function

我可以弄清楚为什么会出现这个问题,特别是因为我发现了多个以这种方式处理它的示例。有人知道吗?

【问题讨论】:

【参考方案1】:

你的依赖列表和你的回调参数列表不匹配。

require([
    "dojox/charting/Chart",
    "dojox/charting/themes/Claro",
    "dojox/charting/plot2d/MarkersOnly", 
    "dojox/charting/plot2d/Columns",
    "dojox/fx/easing",
    "dojox/charting/action2d/Tooltip",
    "dojox/charting/axis2d/Default",
    "dojo/ready"
], function(Chart, Theme, MarkersOnly, Columns, easing, Tooltip, Default, ready)  /* ... */ );

注意参数的不同顺序:ColumnsMarkersOnly 之后。

按照您提出参数的顺序,Tooltip 指向 dojo/fx/easing 模块并给出您描述的错误。

【讨论】:

这是一个很好的收获!谢谢你。虽然这确实有帮助。由于某些奇怪的原因,现在该行(代码的工具提示行)吐出“无法读取未定义的属性'名称'。chart1在点击工具提示之前已定义并使用了很多次,我在做什么错了我的其余代码导致工具提示行出错? var tip = new Tooltip(chart1, "default"); - 您没有名为“default”的绘图。您需要指定要附加到的现有图(“预算”或“实际”)。 完美!我还需要将 claro 样式表导入到网页中才能正常工作,并且不会出现在页面底部并实际出现在图表上(`)谢谢。

以上是关于DOJO 工具提示给出“未捕获的类型错误:对象不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

Xpages 无法弹出 dojo 工具提示对话框

在 Dojo Select 中添加工具提示

Dojo 工具提示未显示在 Internet Explorer 中

向 Dojo Tree 节点添加工具提示的最简单方法?

在仪表 Dojo 内添加标题文本

如何在剑道图表十字准线工具提示中提供 X 轴和 Y 轴值?