当我使用导入时
<script type="text/javascript" src="http://o.aolcdn.com/dojo/1.2.3/dojo/dojo.xd.js"
djConfig="parseOnLoad:true, isDebug: true"></script>
我得到了错误
dojox.data.CsvStore is not a constructor
对于诸如
这样的行var stateStore = new dojox.data.CsvStore({url: "dojo-passcsv.php", label: "name"});
但是如果我使用来自本地安装的 dojo 的导入,错误就会消失,例如
<script type="text/javascript" src="dojo-release-1.2.3/dojo/dojo.js"
djConfig="parseOnLoad:true, isDebug: true"></script>
我真的希望能够使用 CDN 托管的 dojo 安装。 DojoX 库和 dojo.xd.js 之间是否存在已知问题?
提前致谢
动画
附言dojo.require("dojox.data.CsvStore");
声明就位。
P.P.S 完整的“工作代码”如下。将 CSS 和 JS 引用替换为来自 CDN 的引用会破坏它。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
@import "dojo-release-1.2.3/dijit/themes/tundra/tundra.css";
@import "dojo-release-1.2.3/dojo/resources/dojo.css"
</style>
<script type="text/javascript" src="dojo-release-1.2.3/dojo/dojo.js"
djConfig="parseOnLoad:true, isDebug: true"></script>
<script>
dojo.require("dojox.data.CsvStore");
dojo.require("dijit.Tree");
dojo.require("dojo.parser");
</script>
<script type="text/javascript">
var stateStore = new dojox.data.CsvStore({url: "states.csv", label: "name"});
</script>
</head>
<body class="tundra">
<div dojoType="dijit.Tree" store="stateStore" labelAttr="name" label="States">
</div>
</body>
</html>
最佳答案
对您的更新使用react:
我强烈认为你应该尝试使用 dojo.addOnLoad()
.最后两个在一起<script>
你的 <head>
的部分会变成:
<script>
dojo.addOnLoad(function(){
dojo.require("dojox.data.CsvStore");
dojo.require("dijit.Tree");
dojo.require("dojo.parser"); /* I don't think you really need this line */
var stateStore = new dojox.data.CsvStore({url: "states.csv", label: "name"});
});
</script>
您原始代码的问题在于您无法保证构造函数 dojox.data.CsvStore
在您即将创建 stateStore
时已阅读它的实例。那就是dojo.addOnLoad()
进来,保证在执行作为 addOnLoad()
的参数传递的抽象函数之前加载其余的 javascript .
因为这是一个时间问题,您自己的原始代码有时可能会工作,而其他人可能不会:这取决于下载速度和您的浏览器将各种 javascript 位组合在一起的顺序。这就是为什么使用 dojo 的远程库偶尔会产生与使用您自己的 dojo 库的本地副本不同的结果。
也就是说,如果您使用的是 Firefox 3(早于 3.0.6),请记住我所说的关于已知错误的内容。在这种情况下,您可能想把 <script>
紧接收盘前封锁 </body>
标记...(该选项也适用于其他浏览器。)
关于javascript - dojo.xd.js 无法识别 dojox.data.CsvStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/477085/