我有一个继承自Base
的{{1}}类。 [_WidgetBase, _TemplatedMixin]
正常运作。现在我在另一个无效的类中继承了这个Base
Base
派生类
define([
"dojo/_base/declare", "dojo/parser", ...
], function(declare, parser, ...){
return declare("mc.widgets.Base", [_WidgetBase, _TemplatedMixin], {
templateString:
'<div class="mc-note-base">'+
'</div>',
constructor: function(argv){
var self = this.inherited(arguments);
return self;
},
data: function(){
},
postCreate: function(){
...
}
})
});
派生类抛出
错误:声明mc.widgets.Derived:使用继承的
调用链式构造函数
答案 0 :(得分:3)
这种情况正在发生,因为Widget生命周期的constructor
部分是使用特殊的链接机制处理的,该机制专为更灵活的Widget创建而设计。您可以read here获取更多信息,但适用于您的情况的部分说明:
超类构造函数总是自动调用,并且总是在子类构造函数之前调用。该惯例在90%的情况下减少了样板。如果它不符合您的需求,请参阅下面的手动构造函数链接。对于所有其他方法,使用this.inherited(arguments)来调用同名的超类方法。
如果您只是从Widget的构造函数方法中删除this.inherited(arguments)
调用,则问题将得到解决。 Here is a simple jsfiddle模仿你的Widget设置并演示解决方案。