这是需要包的正确声明式,data-dojo类型语法吗?

时间:2013-09-05 07:46:00

标签: dojo amd

我有一个包,在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
});

但是使用声明性语法执行相同操作会抛出无法解析构造函数:'Widget'错误:

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

您需要添加

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

参与您正在使用的HTML文档中的脚本标记

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

看起来应该是这样的:

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

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

相关问题