Extjs Webアプリケーションを開発してから数ヶ月の経験があります。私はこの問題に遭遇しました:ExtjsクラスをオーバーライドしてcallParentを呼び出す
私はクラスをオーバーライドするときにメソッドを変更し、以前の実装に従い、callParent()
を呼び出します。オーバーライド部分は機能しますが、callParent()
は古い実装を呼び出しました。
私のオーバーライドExtJSのクラスのメソッドをオーバーライドする
Ext.override(Ext.layout.component.Draw, {
finishedLayout: function (ownerContext) {
console.log("new layouter being overriden");
this.callParent(arguments);
}
});
コード:コンソールで
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()
をスタックに戻します。親クラスを呼び出す必要がありますが、オーバーライドされたメソッドは呼び出さないでください。
どのようにこの問題を解決するためのアイデアですか?
申し訳ありませんが取り残さするバージョンを生成するcallParentを使用して、一方で、コンソールログに「固定」し、「グッド」生成しますExtJs 4.1.2を使用しています。選択された答えは正しいアプローチですが、私はそれを使うことができませんでした。代わりに@wantokが提供する答えを使用しました。 –
ところで、あなたのスーパーの1つをバイパスすることは、大きなハックです、それを賢く慎重に使用してください! –