Dojo 1.8 图表编程教程报错
Posted
技术标签:
【中文标题】Dojo 1.8 图表编程教程报错【英文标题】:Dojo 1.8 chart programmatic tutorial error 【发布时间】:2012-10-06 07:54:50 【问题描述】:我一直在阅读一些 Dojo 1.8 教程,这些教程很棒,但是在基本图表教程中遇到了一个错误。声明式示例运行良好,但编程示例在尝试渲染图表时出错。
图表教程:http://dojotoolkit.org/documentation/tutorials/1.8/charting/
工作声明性示例:http://dojotoolkit.org/documentation/tutorials/1.8/charting/demo/basic-declarative.php
错误的程序示例:http://dojotoolkit.org/documentation/tutorials/1.8/charting/demo/basic-programmatic.php
根据我的调查,问题似乎在于代码试图在字符串上使用“IN”操作数,此时它会失败。
firebug 中的错误如下所示:“TypeError: invalid 'in' operand t”
您需要下载 dojox/gfx/path.js 的非缩小版,然后查看第 191 行,您将在其中看到以下 sn-p 代码:
if(t instanceof Array)
this._collectArgs(_12,t);
else
if("x" in t&&"y" in t)
_12.push(t.x,t.y);
我认为错误在于逻辑落入“if("x" in t&&"y" in t)" 行。
有什么想法吗?
【问题讨论】:
对我来说似乎是一个错字“...in t && "y" in t) ...”。注意空格。 好主意,我也尝试过同样的想法,但不幸的是没有任何区别。 【参考方案1】:这似乎是教程中的一个错误,“labelOffset”应该是一个数字,但他们给了它一个字符串,因此它失败了,去掉引号就可以了,见这个论坛帖子。 Charting tutorial in 1.7 and 1.8
【讨论】:
感谢您找到 Leona。【参考方案2】:是的,我找到了错误的原因,但没有找到补救措施。
它的 labelOffset 值是一个负数,看样子!
因此,如果您将“-20”更改为“20”,它会正常运行。
完整示例,包括导致错误的负值...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Demo: Basic Programmatic Chart</title>
<link rel="stylesheet" href="style.css" media="screen">
<link rel="stylesheet" href="../../../resources/style/demo.css" media="screen">
</head>
<body>
<h1>Demo: Basic Programmatic Chart</h1>
<!-- create the chart -->
<div id="chartNode" style="width: 550px; height: 550px;"></div>
<!-- load dojo and provide config via data attribute -->
<!-- load dojo and provide config via data attribute -->
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js"></script>
<script>
// x and y coordinates used for easy understanding of where they should display
// Data represents website visits over a week period
chartData = [
x: 1, y: 19021 ,
x: 1, y: 12837 ,
x: 1, y: 12378 ,
x: 1, y: 21882 ,
x: 1, y: 17654 ,
x: 1, y: 15833 ,
x: 1, y: 16122
];
require([
// Require the basic 2d chart resource
"dojox/charting/Chart",
// Require the theme of our choosing
"dojox/charting/themes/Claro",
// Charting plugins:
//Require the Pie type of Plot
"dojox/charting/plot2d/Pie",
// Wait until the DOM is ready
"dojo/domReady!"
], function(Chart, theme, PiePlot)
// Create the chart within it's "holding" node
var pieChart = new Chart("chartNode");
// Set the theme
pieChart.setTheme(theme);
// Add the only/default plot
pieChart.addPlot("default",
type: PiePlot, // our plot2d/Pie module reference as type value
radius: 200,
fontColor: "black",
labelOffset: "-20" <-- bug value here
);
// Add the series of data
pieChart.addSeries("January",chartData);
// Render the chart!
pieChart.render();
);
</script>
</body>
</html>
只需将 labelOffset 值设为正值,一切都会正常运行。
labelOffset: "20"
【讨论】:
以上是关于Dojo 1.8 图表编程教程报错的主要内容,如果未能解决你的问题,请参考以下文章
Angular Highcharts教程_编程入门自学教程_菜鸟教程-免费教程分享
JasperReports教程_编程入门自学教程_菜鸟教程-免费教程分享