2

次のようなイベントを追加しました。

this.getLetters().element.on({
   tap: me.lettersTap,
   delegate: 'span.letter-hidden'
});

ユーザーの操作に基づいて、これらの要素に別のクラスを追加しているので、次のようになります。

<span class="letter-hidden new_class">

「new_class」に基づいてイベント ハンドラを削除したいのですが、方法がわかりません。私は次のように試しました:

questionController.getLetters().element.un({
            tap: questionController.lettersTap,
            delegate: 'span.new_class',
            scope: questionController
        });

上記のコードで「new_class」をletter-hiddenに置き換えると削除できるので、同じクラスが使用されている場合は削除されると思いますが、ドキュメントには記載されていません。私は何か間違ったことをしていますか、代替手段があればいいのですが...ありがとう。

4

1 に答える 1

2

デリゲートを使用したため、デリゲートを削除しようとするときはまったく同じものを使用することが重要です。それ以外の場合、ExtJS はそれが別の要素であると想定する必要があり、これは正しい動作です。

これは、登録されたリスナーがチェックされる方法です。

(registered.fn === remove.fn && 
 registered.scope === remove.scope && 
 registered.delegate === remove.delegate && 
 registered.order === remove.order)

いいえ、別の方法はありません。登録したのと同じプロパティで登録を解除する必要があります。

: Sencha は、DOM 内でクエリを実行するためにプロパティを使用しません。oberservalbe リスナー コレクションで、登録を解除するために渡したような登録済みのリスナーを検索するだけです。

于 2013-07-06T11:14:21.600 に答える