0

我正在尝试在我的 Worklight 6.0 应用程序中使用 dojo 1.9 创建一个简单的小部件,但我遇到了很多问题,我已经为它搞砸了太久,我可能错过了一些非常简单的东西。

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

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

这是我的主要 HTML 文件:http: //jsfiddle.net/d8K69/ 最重要的是:

var dojoConfig = {
    isDebug:是的,
    异步:是的,
    解析加载:真,
    mblHideAddressBar:假,
    包:[{
                “名称”:“游乐场”,
                “位置”:“js/游乐场”
                }]
    };  
<div id="header" data-dojo-type="playground.HeaderWidget"></div>

自定义 Widget 代码可以在这里找到:http: //jsfiddle.net/T9Tfq/2/

define([ "dojo/_base/declare", 
     "dijit/_WidgetBase", 
     "dijit/_TemplatedMixin", 
     "dojo/text!js/playground/widgets/header/HeaderWidget.html" ], 
 function(declare, _WidgetBase, _TemplatedMixin, template) {
    WL.Logger.debug("HeaderWidget.js: init.");

    return declare("playground.HeaderWidget", null, [_WidgetBase, _TemplatedMixin], {
        headerTitle: "Default header title",
            
        templateString: template,
            
        postCreate: function() {
                // Get a DOM node reference for the root of our widget
                //var domNode = this.domNode;    
                
                baseClass: "headerWidget";
    
                  // Run any parent postCreate processes - can be done at any point
                this.inherited(arguments);
                
                this.headerTitle.style.color = "red";
                }
     });
});

我对定义中的模块名称、dojoConfig 中的包以及在其他 javascript 文件中包含 (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,但这似乎没有成功。

4

1 回答 1

1

declare()函数仅允许 3 个参数 afaik:

  • 类名,在这种情况下playground.HeaderWidget
  • 超类模块 (_WidgetBase_TemplatedMixin)
  • 对象/类本身

所以你有 1 个参数(那个null)太多了。

在您的情况下,它将使用null作为超类和超类模块数组[_WidgetBase, _TemplatedMixin]作为您的类/对象。数组没有constructornull没有构造函数,所以会抛出错误。

解决方法:去掉null参数。有关declare()功能(和可能的参数)的更多信息,请参阅API 文档

于 2013-08-25T20:20:12.257 回答