我正在研究Dojo从1.4迁移到1.8。我有一个项目,其中有一些写dojo的jsp页面,它从xml文件中获取dojo的路径。我已经将路径从dojo 1.4库更改为dojo 1.8库,但在这样做之后,对dojo小部件的引用抛出了一个错误
例如dijit.byId("idofidget")
错误:dijit.byId("idofidget")为null或不是对象。
请指导如何解决此问题,如果能提供升级的基本步骤会更好。
提前感谢
如果您真的要升级到Dojo 1.8,那么您必须将代码重写为AMD,例如:
// Load the modules you need
require([ "dijit/registry", "dojo/ready", "dojo/parser" ], function(registry, ready) {
// Wait until DOM is finished + widgets on the page are parsed
ready(function() {
// Retrieve widget instance
registry.byId("idofwidget");
});
});
需要知道的一件重要的事情是,你不升级Dojo,而是迁移它(至少在使用1.7之前和之后的版本时)。这通常涉及到你不能简单地更改Dojo库,但你也必须迁移你的代码。
有一些关于从1.7之前迁移到1.7之后的文章,例如这篇关于迁移的文章。
Sitepen还提供了一个名为Dojo AMD转换器的工具,它可以将您的模块转换为AMD语法,它不能100%保证它会工作,但它让您(至少)更近了一步。他们还有一篇关于迁移的文章,你可以在这里找到。