1

ウィジェットを拡張しようとすると問題が発生し、次のエラーが表示されます。

ImageBoxAnim の宣言: 継承されたチェーン コンストラクターの呼び出し

同じ問題を抱えている人を見つけることができなかったので、私の理解不足だと思いdojo/_base/declareます。

基本クラス "_ImageBoxBase" (グロテスクに簡略化):

define(['dojo/_base/declare', 'dijit/_WidgetBase'], function(declare, _WidgetBase){
    return declare('_ImageBoxBase', [_WidgetBase], {
        constructor : function(){...}
    }
})

ImageBox (_ImageBoxBase のサブクラス 1):

define(['dojo/_base/declare', './_ImageBoxBase'], function(declare, _ImageBoxBase){
    return declare("ImageBox", [_ImageBoxBase], {
        constructor : function(){
            this.inherited(arguments)
            // this class works like a charm
        }
    }
})

ImageBoxAnim (ImageBox のサブクラス):

define(['dojo/_base/declare', './ImageBox'], function(declare, ImageBox){
    return declare("ImageBoxAnim", [ImageBox], {
        constructor : function(){
            this.inherited(arguments)
            // no worky!
        }
    }
})

宣言ステートメントで多くのバリエーションを試しましたが、少なくともスクリプトがエラーをスローしないようにする唯一のものは、null の「親」クラスですが、widgitify しません。HTML/CSS はそのままレンダリングされますが、返されたdeclareオブジェクトでメソッドは呼び出されません。

基本的に、ImageBoxクラスには継承したい機能がありますが、ImageBoxAnim機能(アニメーション)を追加します。

私が得たのは、ImageBox クラスを定義するときです。それは同じ構文であり、_WidgetBase拡張するものを拡張するのと同じプロセスであると思いました_WidgetBase。多くのオンラインの例では、組み込みの dijit を拡張する方法が示されているため、どこが間違っているのかわかりません。

注: これらが技術的に「クラス」ではないことはわかっていますが、拡張/サブ/スーパークラスの観点からは、言語化する方が簡単です。

4

1 に答える 1