0

Worklight 6.0 アプリケーション内で dojo 1.9 を使用して単純なウィジェットを作成しようとしていますが、非常に問題が発生しています。

ここで、私の Worklight アプリの構造を確認できます。 ワークライト アプリケーション

JavaScript ファイル (ウィジェットなど) を含むサブフォルダーを作成しました。

これは私のメインの HTML ファイルです: http://jsfiddle.net/d8K69/ 最も重要なのは:

var dojoConfig = {
    isDebug : 真、
    非同期: 真、
    parseOnLoad : 真、
    mblHideAddressBar: false,
    パッケージ: [ {
                「名前」:「遊び場」、
                「場所」:「js/遊び場」
                } ]
    };  
<div id="header" data-dojo-type="playground.HeaderWidget"></div>

カスタム ウィジェット コードは、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";
                }
     });
});

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 を作成していませんが、これは成功していないようです。

4

1 に答える 1

1

このdeclare()関数は、次の 3 つのパラメーターのみを許可します。

  • この場合はクラス名playground.HeaderWidget
  • スーパークラス モジュール (_WidgetBaseおよび_TemplatedMixin)
  • オブジェクト/クラス自体

したがって、1 つのパラメーター ( null1 つ) が多すぎます。

あなたの場合null、スーパークラスとして、スーパークラス モジュールの配列をクラス[_WidgetBase, _TemplatedMixin]/オブジェクトとして使用します。配列にはコンストラクターも含まれconstructornullいないため、エラーがスローされます。

解決策: パラメータを削除しnullます。declare()機能 (および使用可能なパラメーター) の詳細については、 API ドキュメントを参照してください。

于 2013-08-25T20:20:12.257 に答える