我有几个月开发 Extjs Web 应用程序的经验。我遇到了这个问题:
当我重写一个类时,我修改了方法并遵循了之前的实现和调用callParent()
。覆盖部分有效,但callParent()
调用了旧实现。
我的覆盖代码
Ext.override(Ext.layout.component.Draw, {
finishedLayout: function (ownerContext) {
console.log("new layouter being overriden");
this.callParent(arguments);
}
});
要重写的 Extjs 类方法:
finishedLayout: function (ownerContext) {
var props = ownerContext.props,
paddingInfo = ownerContext.getPaddingInfo();
console.log("old layouter being overriden");
this.owner.setSurfaceSize(props.contentWidth - paddingInfo.width, props.contentHeight - paddingInfo.height);
this.callParent(arguments);
}
在控制台中,我可以看到首先新布局器打印出消息,然后是旧布局器实现......我放置了一个断点并回溯调用堆栈,callParent()
新布局器的调用堆栈称为旧布局器。我需要调用父类,而不是被覆盖的方法。
知道如何解决这个问题吗?