1

AngularJS アプリの 1 つに奇妙な問題があります。アプリはチェックボックスのスタイリングに iCheck を使用しますが、問題は次のとおりです。携帯電話(またはモバイル エミュレーター) でラベルをクリックしてチェックボックスを選択すると、チェックボックスに関連付けられたイベントが 2 回発生します。

問題を自分で再現できる JSFiddle を作成しました: https://jsfiddle.net/o6oewfff/22/

 <input data-icheck data-ng-model="product.selected" id="{{product.id}}" type="checkbox" data-ng-change="callAnEvent()" />

まず、それがどのように機能するかを見てみましょう。

  1. ブラウザで JSFiddle を開きます
  2. 開発者ツールバーで JavaScript コンソールを開きます
  3. ラベルをクリックしてチェックボックスの 1 つを選択すると、コンソール ログに次の 3 つのログ項目が表示されます: ApplyEvent called、およびUpdate

それでは、修正しようとしている問題を再現しましょう。

  1. モバイル エミュレーターで JSFiddle を開きます (たとえば、iPhone 6 を試してください)。
  2. 開発者ツールバーで JavaScript コンソールを開きます
  3. ラベルをクリックしてチェックボックスの 1 つを選択すると、コンソール ログに次の5 つのログ項目が表示されます: ApplyEvent calledUpdateEvent called、およびUpdate

スクリーンショット: http://i.stack.imgur.com/7j03S.png

ご覧のとおり、「呼び出されたイベント」と「更新」をコンソールに記録しているイベントは、モバイルを使用すると 2 回トリガーされます。また、チェックボックスはチェックされていません。なぜこれが起こるのか誰でも理解できますか?

ありがとう!

4

1 に答える 1