dojo / dijit

Dojo 1 - UI library
https://dojotoolkit.org/
Other
174 stars 187 forks source link

dijit/_WidgetBase constructor throws "calling chained constructor" error DOJO Version 1.17.3 #202

Open imdad000 opened 2 years ago

imdad000 commented 2 years ago

I have got a Base class that inherits from [_WidgetBase,_TemplatedMixin] and there is not any Error during compile time but throws a "calling chained constructor" error at run time

[define( ["dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin","dijit/_WidgetsInTemplateMixin","dojo/dom", "dojo/text!./templates/Menu.html"], function(declare ,_WidgetBase , _TemplatedMixin,_WidgetsInTemplateMixin,dom,template) { return declare("com/ibm/b2b/ebics/client/ui/widgets/common/menu/Menu",[_WidgetBase,_TemplatedMixin], {

    templateString: template,
    constructor: function(thisVarBase){

    this.thisVarBase=thisVarBase;
    this.thisVarBase.debugMessage("com.ibm.b2b.ebics.client.ui.widgets.common.menu.Menu cons Entry");
    this.restURLEndpoint=this.thisVarBase.restURLEndpoint;
    console.log("menu User2");
    this.widgetId=this.thisVarBase.widgetId;
    this.menuWidgetLoaderId=null;
    this.HVUZobject=null;
    this.thisVarBase.debugMessage("com.ibm.b2b.ebics.client.ui.widgets.common.menu.Menu cons Exit");
    console.log("menu User3");
},

// @Override
postCreate : function() {
    console.log(" menu User4");
    this.inherited(arguments);
}

}); });

I have added console.log and the code went fine till console.log("menu User3") and after that dojo internally calls some chained constructor and throws Error

Dojo 38 _attrToDom forEach _attrToDom set _applyAttributes create postscript chainedConstructor showMenu onLoad constructor chainedConstructor construct thelist map _instantiate p signalListener then parse hitch onEvent handleDomReady processQ detectReady on domReady runFactory execModule execModule execModule execModule contextRequire guardCheckComplete

wkeese commented 1 year ago

Well, this is wrong:

// @Override
postCreate : function() {
    console.log(" menu User4");
    this.inherited(arguments);
}

You shouldn't have the this.inherited() call in postCreate(). It happens automatically.