2016-11-04 18 views
0

私はあなたが画像編集モードであった場合、画像に描画(「注釈付け」)することもできるAngularJS画像ビューアアプリケーションに取り組んでいます。編集ボタンである鉛筆アイコンをクリックして編集モードに入ります。別のボタン、閉じる編集ボタンをクリックして、編集モードを終了します。jQueryバインド機能が動作しませんでしたか?

アノテーションには、編集モードの描画アクションがスクロールイベントを妨げたため、何かを描画しようとしたときにスクロールが開始されるというバグがありました。だから、そのような編集モードの間、つまり、I無効にスクロールを修正する:

$('body').on("touchmove", function(e){e.preventDefault()}); 

そして、私は近くに編集ボタンが次のようにクリックされたとき、バックスクロールを可能にする:

$('body').off("touchmove"); 

これは正常に動作し、 の場合を除き、の場合、オフ機能を呼び出さずに何かを描画しようとすると、ビューがスクロールし始めます。これらのケースはランダムに起こっており、確実に再現性がありませんが、私が5分間それと座って、落書きすると、不当なスクロールが毎回起こります。

私は実際に、offメソッドのすべての発生にブレークポイントを置くことでこれをテストしました。ブレークポイントはヒットせず、画面はスクロールを開始しました。

オン/オフ方式はバグですか?時間制限はありますか?助けて!

答えて

0

.on()は、要素にイベントハンドラを関連付けます。

.off()は、«以前に添付された»イベントハンドラを要素から削除します。

ですから、このような "ハンドラ" を定義する場合:

function preventTouch(e){ 
    e.preventDefault(); 
} 

をそしてそれを呼び出す:

$('body').on("touchmove", preventTouch(e)); 

その後オフ:

$('body').off("touchmove", preventTouch(e)); 

それは動作するはずです。.. 。
試してみてください!そのような "touchstart" と "touchend":

オン:

$('body').on("touchmove touchstart touchend", preventTouch(e)); 

オフ:

$('body').off("touchmove touchstart touchend", preventTouch(e)); 



おそらく、また、これらのイベントを防ぐ必要があります
関連する問題