javascript - dojo.xd.js 无法识别 dojox.data.CsvStore

标签 javascript cdn dojo

当我使用导入时

<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/

相关文章:

带有 HTTPS 的 Azure CDN 无法正常工作

javascript - requirejs 调用具有相同依赖关系的外部函数

javascript - 如果数组的一个元素不为空而不使用迭代器,则返回 false - Typescript

javascript - 我如何使用本地存储来存储多个变量的值?

javascript - 仅查看框架时 jsfiddle 结果不同?

performance - 如何将 CDN 加速技术应用于图标?

javascript - 如何补充脚本,以便通过在其外部单击来隐藏菜单?

javascript - 如何在不同网页的文件组中自动化 Javascript 组合和缩小?

javascript - 为 declare 解释这个令人困惑的 dojo 教程语法

dojo - 在 BorderContainer 中调整 Dgrid 大小