ウィジェットを拡張しようとすると問題が発生し、次のエラーが表示されます。
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 を拡張する方法が示されているため、どこが間違っているのかわかりません。
注: これらが技術的に「クラス」ではないことはわかっていますが、拡張/サブ/スーパークラスの観点からは、言語化する方が簡単です。