我正致力于将Dojo从1.4迁移到1.8。我有一个项目,其中有一些jsp页面在其中编写dojo,它从xml文件中获取dojo的路径。 我已经将dojo 1.4 Library的路径更改为dojo 1.8 Library,但是在执行此操作之后,dojo小部件的引用会引发错误
例如dijit.byId(“idofwidget”)
错误:dijit.byId(“idofwidget”)为null或不是对象。
请指导如何解决问题,如果可以提供升级的基本步骤,那就更好了。
先谢谢
答案 0 :(得分:2)
如果您真的要升级到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之后的文章,例如this article about migrating。
Sitepen还提供了一个名为Dojo AMD converter的工具,它可以将您的模块转换为AMD语法,但它不能100%保证它会起作用,但它会让您更近一步(至少)。他们还有一篇关于迁移的文章,您可以找到here。