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()
古いレイアウタと呼ばれる新しいレイアウタの呼び出しスタックを再トレースします。親クラスを呼び出す必要がありますが、オーバーライドされたメソッドは呼び出しません。
この問題を解決する方法はありますか?