2017-02-01 5 views
1

qooxdoo 5.0.2(またはそれ以前のバージョン)を使用して、タブレットウィジェットをサブクラス化し、_onKeyPressメソッドをオーバーライドします。 その後、ソースを生成すると正しい動作が得られますが、ビルドを生成すると動作が異なります。私は奇妙な動作を理解できません。タブレットウィジェットのサブクラス化

以下の例で私の質問を簡略化しました。 私はサブクラスの表ウィジェットをオーバーライドし、_onKeyPressメソッドをqooxdoo 5.0.2テーブルウィジェットのソースから同じコードでオーバーライドします。 例を実行し、セルを編集してEnterキーを押します。

行動が悪いです

var tbl = new qx.ui.table.TableModified(tableModel) 

を使用します。 使用

var tbl = new qx.ui.table.Table(tableModel) 

動作は正しいです。 を使用すると、ソースのコンパイル時に動作し、別のコンパイルビルドで動作します。

この問題は何ですか?私のエラーはどこですか? qooxdooで

Playground example

答えて

1

メソッドやインスタンス変数のように保護され、プライベートクラスのメンバーは、大会ごとに、あります。保護されたメンバーは_myProtectedMethodのようなアンダースコアで始まり、プライベートメンバーは__myPrivateMethodのような2つのアンダースコアで始まります。保護されたメンバーはビルドプロセスの影響を受けず、そのまま残されます。これにより、派生クラスによってオーバーライド可能になります。

プライベートメンバはコンパイラによって乱数に難読化されているため、プライベートメソッドまたは定義されているクラス外の変数にアクセスしようとすると例外が発生します。

あなたのプレイグラウンドの例では、保護されたメンバーであるため、それ自体がオーバーライドすることができる_onKeyPressメソッドをオーバーライドしました。

しかし、オーバーライドされたコード内では、this.__focusedRowのようなプライベートメンバーを使用しています。ビルドバージョンでは難読化されているため、__focusedRowメンバーが存在しないためです。より多くの民間メンバーが__selectionManagerが正常にメソッドをオーバーライドするには

になど、__focusedColのようなコードではありますが、あなたはthis.getFocusedRow()代わりのthis.__focusedRowthis.getFocusedColum()代わりのthis._focusedColなど

+0

のように、彼らのアクセサによって、それらのプライベートメンバーを交換する必要がありがとうございました。ソース/ビルドの問題が私を混乱させたので、確認が必要でした。今は大丈夫です。私はこのウェブサイトがどのように答え資格で働くのか、私は今何をしなければならないのか分かりません。私は読むつもりです。 – fsaiyuk2002

+0

うれしい私は助けることができます。もしあなたの質問に答えたら、私の答えを受け入れてください。ありがとうございました。 – level420

関連する問題