我在尝试扩展小部件时遇到问题,给我错误:
声明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!
}
}
})
我已经尝试了很多使用declare语句的变体,并且唯一能够让脚本不抛出错误的东西是一个空的“父”类,但是它没有widgitify。它将呈现HTML / CSS,但在返回的declare
对象中不会调用任何方法。
基本上,ImageBox
类中的功能我希望ImageBoxAnim
继承,同时添加更多功能(动画)。
得到我的是在定义ImageBox类时,它是相同的语法,我认为,扩展_WidgetBase
的过程与扩展_WidgetBase
的扩展名相同。很多在线示例都提供了扩展内置dijit的方法,所以我没有看到我出错的地方。
注意:我知道这些在技术上并不是“类”,但从扩展/子/超类的角度来看,它更容易用语言表达。
答案 0 :(得分:3)
我无法确定,但我想你会看到问题,因为构造函数会自动链接(无需调用this.inherited)。如果您想手动链接,请查看manual constructor chaining