扩展自定义dijit“链式构造函数”错误

时间:2013-02-07 19:36:37

标签: inheritance dojo

我在尝试扩展小部件时遇到问题,给我错误:

  

声明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的方法,所以我没有看到我出错的地方。

注意:我知道这些在技术上并不是“类”,但从扩展/子/超类的角度来看,它更容易用语言表达。

1 个答案:

答案 0 :(得分:3)

我无法确定,但我想你会看到问题,因为构造函数会自动链接(无需调用this.inherited)。如果您想手动链接,请查看manual constructor chaining