0

我有一个包,定义dojoConfig如下:

packages: [ 
    { name: 'Widget', location: '/widgets/Widget' } 
] 

/widgets/Widget/main.js文件定义了我的主模块。有了这个配置,在 Javascript 中我可以直接通过它的包名来require安装模块,如下所示:Widget/main

require(["Widget"], function(Widget){
    var widget = new Widget();
    // all is well
});

但是使用声明性语法执行相同操作会引发Unable to resolve constructor for: 'Widget'错误:

<div data-dojo-type="Widget"></div> 

我做错了什么,还是这是预期的行为?

4

2 回答 2

0

更容易看到小部件是如何创建的,但抱怨是你没有构造函数。小部件需要构造函数。如果您扩展 WidgetBase 它为您完成。

检查文档: http ://dojotoolkit.org/reference-guide/1.9/quickstart/writingWidgets.html

于 2013-09-05T21:49:30.170 回答
-1

您需要添加

require(["Widget"], function(Widget){});

在您正在使用的 HTML 文档中加入脚本标记

<div data-dojo-type="Widget"></div>

它应该看起来像这样:

<script> require(["Widget"], function(Widget){}); </script>

您必须先要求该模块/小部件,然后才能在 HTML 页面中调用它,就像在脚本标签中调用它一样。

于 2013-09-11T08:57:00.540 回答