Ibm mobilefirst 未找到自定义dojo小部件的构造函数

Ibm mobilefirst 未找到自定义dojo小部件的构造函数,ibm-mobilefirst,dojo,dojox.mobile,Ibm Mobilefirst,Dojo,Dojox.mobile,我试图在Worklight 6.0应用程序中使用dojo 1.9创建一个简单的小部件,但我遇到了太多问题,我在这方面花了太长时间,我可能错过了一些非常简单的小部件 在这里,您可以找到我的Worklight应用程序的结构: 我已经创建了包含javascript文件(小部件等)的子文件夹 这是我的主HTML文件: 最重要的是: var dojoConfig = { isDebug : true, async : true, parseOnLoad : true, m

我试图在Worklight 6.0应用程序中使用dojo 1.9创建一个简单的小部件,但我遇到了太多问题,我在这方面花了太长时间,我可能错过了一些非常简单的小部件

在这里,您可以找到我的Worklight应用程序的结构:

我已经创建了包含javascript文件(小部件等)的子文件夹

这是我的主HTML文件: 最重要的是:

var dojoConfig = { isDebug : true, async : true, parseOnLoad : true, mblHideAddressBar: false, packages : [ { "name" : "playground", "location" : "js/playground" } ] }; 我对define中的模块名、dojoConfig中的包以及其他javascript文件中的include(require)是如何协同工作的感到有点困惑。 目前我遇到了以下错误:

dojo/parser::parse() error
Error: Unable to resolve constructor for: 'playground.HeaderWidget'
在另一个javascript文件中尝试此操作时:

require([ "js/playground/widgets/header/HeaderWidget"], function(HeaderWidget) {
    WL.Logger.debug("DOING SOMETHING WITH MY WIDGET");
似乎有效(虽然我实际上还没有创建headerwidget程序,但似乎没有成功。

函数
declare()
一次只允许3个参数:

  • 类名,在本例中为
    playway.HeaderWidget
  • 超类模块(
    \u WidgetBase
    \u TemplatedMixin
  • 对象/类本身
因此,您有一个参数(空的
null
one)太多了

在您的情况下,它将使用
null
作为超类,并将超类模块数组
[\u WidgetBase,\u TemplatedMixin]
作为类/对象。该数组没有
构造函数
null
也没有构造函数,因此它将抛出一个错误


解决方案:删除
null
参数。有关
declare()
功能的更多信息(以及可能的参数)可以在中找到。

在与Dimitri M的简短会话后,我们在我的小部件中发现了一些问题:-如上所述传递给declare的参数错误-在de小部件中:基类:“headerWidget”定义在错误的位置,它应该在postConstruct之外,但是为小部件使用模块ID似乎不起作用。
dojo/parser::parse() error
Error: Unable to resolve constructor for: 'playground.HeaderWidget'
require([ "js/playground/widgets/header/HeaderWidget"], function(HeaderWidget) {
    WL.Logger.debug("DOING SOMETHING WITH MY WIDGET");